diff src/http/ngx_http_cache.h @ 197:0b81c7a0b133

nginx-0.0.1-2003-11-27-10:45:22 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 27 Nov 2003 07:45:22 +0000
parents 8dee38ea9117
children a65b630b3a66
line wrap: on
line diff
--- a/src/http/ngx_http_cache.h
+++ b/src/http/ngx_http_cache.h
@@ -8,6 +8,26 @@
 
 
 typedef struct {
+    uint32_t       crc;
+    ngx_str_t      key;
+    time_t         accessed;
+
+    unsigned       refs:20;    /* 1048576 references */
+    unsigned       count:2;    /* lazy allocation: the 4 uses */
+    unsigned       deleted:1;
+
+    ngx_fd_t       fd;
+    time_t         last_modified;
+    time_t         updated;
+
+    union {
+        off_t      size;
+        ngx_str_t  value;
+    } data;
+} ngx_http_cache_t;
+
+
+typedef struct {
     time_t       expires;
     time_t       last_modified;
     time_t       date;
@@ -17,24 +37,11 @@ typedef struct {
 } ngx_http_cache_header_t;
 
 
-typedef struct {
-    uint32_t     crc;
-    ngx_str_t    key;
-    ngx_fd_t     fd;
-    off_t        size;
-    void        *data;          /* mmap, memory */
-    time_t       accessed;
-    time_t       last_modified;
-    time_t       updated;       /* no needed with kqueue */
-    int          refs;
-    int          flags;
-} ngx_http_cache_entry_t;
-
-#define NGX_HTTP_CACHE_HASH   1021
+#define NGX_HTTP_CACHE_HASH   7
 #define NGX_HTTP_CACHE_NELTS  4
 
 typedef struct {
-    ngx_http_cache_entry_t  **cache;
+    ngx_http_cache_t         *elts;
     size_t                    hash;
     size_t                    nelts;
     time_t                    life_time;
@@ -45,12 +52,7 @@ typedef struct {
 
 typedef struct {
     ngx_http_cache_hash_t    *hash;
-} ngx_http_cache_conf_t;
-
-
-typedef struct {
-    ngx_http_cache_hash_t    *hash;
-    ngx_http_cache_entry_t   *cache;
+    ngx_http_cache_t         *cache;
     ngx_file_t                file;
     ngx_str_t                 key;
     uint32_t                  crc;
@@ -67,6 +69,11 @@ typedef struct {
 } ngx_http_cache_ctx_t;
 
 
+typedef struct {
+    ngx_http_cache_hash_t    *open_files;
+} ngx_http_cache_conf_t;
+
+
 #define NGX_HTTP_CACHE_STALE     1
 #define NGX_HTTP_CACHE_AGED      2
 #define NGX_HTTP_CACHE_THE_SAME  3
@@ -74,10 +81,19 @@ typedef struct {
 
 int ngx_http_cache_get_file(ngx_http_request_t *r, ngx_http_cache_ctx_t *ctx);
 int ngx_http_cache_open_file(ngx_http_cache_ctx_t *ctx, ngx_file_uniq_t uniq);
+int ngx_http_cache_update_file(ngx_http_request_t *r,ngx_http_cache_ctx_t *ctx,
+                               ngx_str_t *temp_file);
+
+ngx_http_cache_t *ngx_http_cache_get(ngx_http_cache_hash_t *cache,
+                                     ngx_str_t *key, uint32_t *crc);
+ngx_http_cache_t *ngx_http_cache_alloc(ngx_http_cache_hash_t *cache,
+                                       ngx_str_t *key, uint32_t crc,
+                                       ngx_log_t *log);
+
 int ngx_garbage_collector_http_cache_handler(ngx_gc_t *gc, ngx_str_t *name,
                                              ngx_dir_t *dir);
-int ngx_http_cache_update_file(ngx_http_request_t *r,ngx_http_cache_ctx_t *ctx,
-                               ngx_str_t *temp_file);
+
+extern ngx_module_t  ngx_http_cache_module;