Annotation of embedaddon/nginx/src/http/ngx_http_cache.h, revision 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>