Mercurial > hg > nginx
diff src/core/ngx_buf.h @ 343:6bdf858bff8c
nginx-0.0.3-2004-05-28-19:49:23 import; rename ngx_hunk_t to ngx_buf_t
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 28 May 2004 15:49:23 +0000 |
parents | src/core/ngx_hunk.h@5cfd65b8b0a7 |
children | e366ba5db8f8 |
line wrap: on
line diff
copy from src/core/ngx_hunk.h copy to src/core/ngx_buf.h --- a/src/core/ngx_hunk.h +++ b/src/core/ngx_buf.h @@ -1,61 +1,87 @@ -#ifndef _NGX_HUNK_H_INCLUDED_ -#define _NGX_HUNK_H_INCLUDED_ +#ifndef _NGX_BUF_H_INCLUDED_ +#define _NGX_BUF_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> -/* hunk type */ +#if 0 +/* the buf type */ -/* the hunk is in memory */ +/* the buf's content is in memory */ #define NGX_HUNK_IN_MEMORY 0x0001 -/* the hunk's content can be changed */ +/* the buf's content can be changed */ #define NGX_HUNK_TEMP 0x0002 -/* the hunk's content is in cache and can not be changed */ +/* the buf's content is in cache and can not be changed */ #define NGX_HUNK_MEMORY 0x0004 -/* the hunk's content is mmap()ed and can not be changed */ #define NGX_HUNK_MMAP 0x0008 +/* the buf's content is recycled */ #define NGX_HUNK_RECYCLED 0x0010 -/* the hunk is in file */ +/* the buf's content is in a file */ #define NGX_HUNK_FILE 0x0020 #define NGX_HUNK_STORAGE (NGX_HUNK_IN_MEMORY \ |NGX_HUNK_TEMP|NGX_HUNK_MEMORY|NGX_HUNK_MMAP \ |NGX_HUNK_RECYCLED|NGX_HUNK_FILE) -/* hunk flags */ +/* the buf flags */ -/* in thread state flush means to write the hunk completely before return */ -/* in event state flush means to start to write the hunk */ +/* in thread state flush means to write the buf completely before return */ +/* in event state flush means to start to write the buf */ #define NGX_HUNK_FLUSH 0x0100 -/* last hunk */ + +/* the last buf */ #define NGX_HUNK_LAST 0x0200 #define NGX_HUNK_PREREAD 0x2000 #define NGX_HUNK_LAST_SHADOW 0x4000 #define NGX_HUNK_TEMP_FILE 0x8000 +#endif -typedef void * ngx_hunk_tag_t; +typedef void * ngx_buf_tag_t; -typedef struct ngx_hunk_s ngx_hunk_t; +typedef struct ngx_buf_s ngx_buf_t; -struct ngx_hunk_s { +struct ngx_buf_s { u_char *pos; u_char *last; off_t file_pos; off_t file_last; int type; - u_char *start; /* start of hunk */ - u_char *end; /* end of hunk */ - ngx_hunk_tag_t tag; + u_char *start; /* start of buffer */ + u_char *end; /* end of buffer */ + ngx_buf_tag_t tag; ngx_file_t *file; - ngx_hunk_t *shadow; + ngx_buf_t *shadow; + + + /* the buf's content can be changed */ + unsigned temporary:1; + + /* + * the buf's content is in a memory cache or in a read only memory + * and can not be changed + */ + unsigned memory:1; + + /* the buf's content is mmap()ed and can not be changed */ + unsigned mmap:1; + unsigned recycled:1; + unsigned in_file:1; + unsigned flush:1; + unsigned last_buf:1; + + unsigned last_shadow:1; + unsigned temp_file:1; + + unsigned zerocopy_busy:1; + /* STUB */ int num; }; @@ -63,8 +89,8 @@ struct ngx_hunk_s { typedef struct ngx_chain_s ngx_chain_t; struct ngx_chain_s { - ngx_hunk_t *hunk; - ngx_chain_t *next; + ngx_buf_t *buf; + ngx_chain_t *next; }; @@ -77,7 +103,7 @@ typedef struct { typedef int (*ngx_output_chain_filter_pt)(void *ctx, ngx_chain_t *out); typedef struct { - ngx_hunk_t *hunk; + ngx_buf_t *buf; ngx_chain_t *in; ngx_chain_t *free; ngx_chain_t *busy; @@ -87,9 +113,9 @@ typedef struct { unsigned need_in_temp; ngx_pool_t *pool; - ngx_int_t hunks; + ngx_int_t allocated; ngx_bufs_t bufs; - ngx_hunk_tag_t tag; + ngx_buf_tag_t tag; ngx_output_chain_filter_pt output_filter; void *filter_ctx; @@ -107,6 +133,17 @@ typedef struct { #define NGX_CHAIN_ERROR (ngx_chain_t *) NGX_ERROR +#define ngx_buf_in_memory(b) (b->temporary || b->memory || b->mmap) +#define ngx_buf_in_memory_only(b) (ngx_buf_in_memory(b) && !b->in_file) +#define ngx_buf_special(b) \ + ((b->flush || b->last) && !ngx_buf_in_memory(b) && !b->in_file) + +#define ngx_buf_size(b) \ + (ngx_buf_in_memory(b) ? (size_t) (b->last - b->pos): \ + (size_t) (b->file_last - b->file_pos)) + +#if 0 + #define ngx_hunk_in_memory_only(h) \ ((h->type & (NGX_HUNK_IN_MEMORY|NGX_HUNK_FILE)) == NGX_HUNK_IN_MEMORY) /* @@ -115,28 +152,34 @@ typedef struct { */ -#define ngx_hunk_special(h) \ - (h->type == (h->type & (NGX_HUNK_FLUSH|NGX_HUNK_LAST))) + + +#define ngx_hunk_special(b) \ + (b->type == (b->type & (NGX_HUNK_FLUSH|NGX_HUNK_LAST))) -#define ngx_hunk_size(h) \ - ((h->type & NGX_HUNK_IN_MEMORY) ? (size_t) (h->last - h->pos): \ - (size_t) (h->file_last - h->file_pos)) +#define ngx_hunk_size(b) \ + ((b->type & NGX_HUNK_IN_MEMORY) ? (size_t) (b->last - b->pos): \ + (size_t) (b->file_last - b->file_pos)) + +#endif -ngx_hunk_t *ngx_create_temp_hunk(ngx_pool_t *pool, size_t size); +ngx_buf_t *ngx_create_temp_buf(ngx_pool_t *pool, size_t size); +ngx_chain_t *ngx_create_chain_of_bufs(ngx_pool_t *pool, ngx_bufs_t *bufs); -#define ngx_alloc_hunk(pool) ngx_palloc(pool, sizeof(ngx_hunk_t)) -#define ngx_calloc_hunk(pool) ngx_pcalloc(pool, sizeof(ngx_hunk_t)) + +#define ngx_alloc_buf(pool) ngx_palloc(pool, sizeof(ngx_buf_t)) +#define ngx_calloc_buf(pool) ngx_pcalloc(pool, sizeof(ngx_buf_t)) #define ngx_alloc_chain_link(pool) ngx_palloc(pool, sizeof(ngx_chain_t)) -#define ngx_alloc_link_and_set_hunk(chain, h, pool, error) \ +#define ngx_alloc_link_and_set_buf(chain, b, pool, error) \ do { \ ngx_test_null(chain, ngx_alloc_chain_link(pool), error); \ - chain->hunk = h; \ + chain->buf = b; \ chain->next = NULL; \ } while (0); @@ -155,7 +198,7 @@ int ngx_chain_writer(void *data, ngx_cha int ngx_chain_add_copy(ngx_pool_t *pool, ngx_chain_t **chain, ngx_chain_t *in); void ngx_chain_update_chains(ngx_chain_t **free, ngx_chain_t **busy, - ngx_chain_t **out, ngx_hunk_tag_t tag); + ngx_chain_t **out, ngx_buf_tag_t tag); -#endif /* _NGX_HUNK_H_INCLUDED_ */ +#endif /* _NGX_BUF_H_INCLUDED_ */