Annotation of embedaddon/nginx/src/http/ngx_http_cache.h, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * Copyright (C) Igor Sysoev
                      4:  * Copyright (C) Nginx, Inc.
                      5:  */
                      6: 
                      7: 
                      8: #ifndef _NGX_HTTP_CACHE_H_INCLUDED_
                      9: #define _NGX_HTTP_CACHE_H_INCLUDED_
                     10: 
                     11: 
                     12: #include <ngx_config.h>
                     13: #include <ngx_core.h>
                     14: #include <ngx_http.h>
                     15: 
                     16: 
                     17: #define NGX_HTTP_CACHE_MISS          1
                     18: #define NGX_HTTP_CACHE_BYPASS        2
                     19: #define NGX_HTTP_CACHE_EXPIRED       3
                     20: #define NGX_HTTP_CACHE_STALE         4
                     21: #define NGX_HTTP_CACHE_UPDATING      5
                     22: #define NGX_HTTP_CACHE_HIT           6
                     23: #define NGX_HTTP_CACHE_SCARCE        7
                     24: 
                     25: #define NGX_HTTP_CACHE_KEY_LEN       16
                     26: 
                     27: 
                     28: typedef struct {
                     29:     ngx_uint_t                       status;
                     30:     time_t                           valid;
                     31: } ngx_http_cache_valid_t;
                     32: 
                     33: 
                     34: typedef struct {
                     35:     ngx_rbtree_node_t                node;
                     36:     ngx_queue_t                      queue;
                     37: 
                     38:     u_char                           key[NGX_HTTP_CACHE_KEY_LEN
                     39:                                          - sizeof(ngx_rbtree_key_t)];
                     40: 
                     41:     unsigned                         count:20;
                     42:     unsigned                         uses:10;
                     43:     unsigned                         valid_msec:10;
                     44:     unsigned                         error:10;
                     45:     unsigned                         exists:1;
                     46:     unsigned                         updating:1;
                     47:     unsigned                         deleting:1;
                     48:                                      /* 11 unused bits */
                     49: 
                     50:     ngx_file_uniq_t                  uniq;
                     51:     time_t                           expire;
                     52:     time_t                           valid_sec;
                     53:     size_t                           body_start;
                     54:     off_t                            fs_size;
                     55: } ngx_http_file_cache_node_t;
                     56: 
                     57: 
                     58: struct ngx_http_cache_s {
                     59:     ngx_file_t                       file;
                     60:     ngx_array_t                      keys;
                     61:     uint32_t                         crc32;
                     62:     u_char                           key[NGX_HTTP_CACHE_KEY_LEN];
                     63: 
                     64:     ngx_file_uniq_t                  uniq;
                     65:     time_t                           valid_sec;
                     66:     time_t                           last_modified;
                     67:     time_t                           date;
                     68: 
                     69:     size_t                           header_start;
                     70:     size_t                           body_start;
                     71:     off_t                            length;
                     72:     off_t                            fs_size;
                     73: 
                     74:     ngx_uint_t                       min_uses;
                     75:     ngx_uint_t                       error;
                     76:     ngx_uint_t                       valid_msec;
                     77: 
                     78:     ngx_buf_t                       *buf;
                     79: 
                     80:     ngx_http_file_cache_t           *file_cache;
                     81:     ngx_http_file_cache_node_t      *node;
                     82: 
                     83:     ngx_msec_t                       lock_timeout;
                     84:     ngx_msec_t                       wait_time;
                     85: 
                     86:     ngx_event_t                      wait_event;
                     87: 
                     88:     unsigned                         lock:1;
                     89:     unsigned                         waiting:1;
                     90: 
                     91:     unsigned                         updated:1;
                     92:     unsigned                         updating:1;
                     93:     unsigned                         exists:1;
                     94:     unsigned                         temp_file:1;
                     95: };
                     96: 
                     97: 
                     98: typedef struct {
                     99:     time_t                           valid_sec;
                    100:     time_t                           last_modified;
                    101:     time_t                           date;
                    102:     uint32_t                         crc32;
                    103:     u_short                          valid_msec;
                    104:     u_short                          header_start;
                    105:     u_short                          body_start;
                    106: } ngx_http_file_cache_header_t;
                    107: 
                    108: 
                    109: typedef struct {
                    110:     ngx_rbtree_t                     rbtree;
                    111:     ngx_rbtree_node_t                sentinel;
                    112:     ngx_queue_t                      queue;
                    113:     ngx_atomic_t                     cold;
                    114:     ngx_atomic_t                     loading;
                    115:     off_t                            size;
                    116: } ngx_http_file_cache_sh_t;
                    117: 
                    118: 
                    119: struct ngx_http_file_cache_s {
                    120:     ngx_http_file_cache_sh_t        *sh;
                    121:     ngx_slab_pool_t                 *shpool;
                    122: 
                    123:     ngx_path_t                      *path;
                    124: 
                    125:     off_t                            max_size;
                    126:     size_t                           bsize;
                    127: 
                    128:     time_t                           inactive;
                    129: 
                    130:     ngx_uint_t                       files;
                    131:     ngx_uint_t                       loader_files;
                    132:     ngx_msec_t                       last;
                    133:     ngx_msec_t                       loader_sleep;
                    134:     ngx_msec_t                       loader_threshold;
                    135: 
                    136:     ngx_shm_zone_t                  *shm_zone;
                    137: };
                    138: 
                    139: 
                    140: ngx_int_t ngx_http_file_cache_new(ngx_http_request_t *r);
                    141: ngx_int_t ngx_http_file_cache_create(ngx_http_request_t *r);
                    142: void ngx_http_file_cache_create_key(ngx_http_request_t *r);
                    143: ngx_int_t ngx_http_file_cache_open(ngx_http_request_t *r);
                    144: void ngx_http_file_cache_set_header(ngx_http_request_t *r, u_char *buf);
                    145: void ngx_http_file_cache_update(ngx_http_request_t *r, ngx_temp_file_t *tf);
                    146: ngx_int_t ngx_http_cache_send(ngx_http_request_t *);
                    147: void ngx_http_file_cache_free(ngx_http_cache_t *c, ngx_temp_file_t *tf);
                    148: time_t ngx_http_file_cache_valid(ngx_array_t *cache_valid, ngx_uint_t status);
                    149: 
                    150: char *ngx_http_file_cache_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
                    151:     void *conf);
                    152: char *ngx_http_file_cache_valid_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
                    153:     void *conf);
                    154: 
                    155: 
                    156: extern ngx_str_t  ngx_http_cache_status[];
                    157: 
                    158: 
                    159: #endif /* _NGX_HTTP_CACHE_H_INCLUDED_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>