Mercurial > hg > nginx
view src/core/ngx_hunk.h @ 7:b5481d6fbbd4
nginx-0.0.1-2002-08-29-20:59:54 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 29 Aug 2002 16:59:54 +0000 |
parents | 669801705ab1 |
children | 708f8bb772ec |
line wrap: on
line source
#ifndef _NGX_CHUNK_H_INCLUDED_ #define _NGX_CHUNK_H_INCLUDED_ #include <ngx_config.h> #include <ngx_types.h> #include <ngx_file.h> #include <ngx_alloc.h> /* hunk type */ /* temp means that hunk's content can be changed */ /* other type means that hunk's content can not be changed */ #define NGX_HUNK_TEMP 0x0001 #define NGX_HUNK_MEMORY 0x0002 #define NGX_HUNK_MMAP 0x0004 #define NGX_HUNK_FILE 0x0008 /* hunk flags */ /* in thread state flush means to write the hunk completely before return */ /* in event state flush means to start to write the hunk */ #define NGX_HUNK_FLUSH 0x0100 /* last hunk */ #define NGX_HUNK_LAST 0x0200 /* can be used with NGX_HUNK_LAST only */ #define NGX_HUNK_SHUTDOWN 0x0400 #define NGX_HUNK_IN_MEMORY (NGX_HUNK_TEMP|NGX_HUNK_MEMORY|NGX_HUNK_MMAP) typedef struct ngx_hunk_s ngx_hunk_t; struct ngx_hunk_s { union { char *mem; /* start of current data */ off_t file; } pos; union { char *mem; /* end of current data */ off_t file; } last; int type; char *start; /* start of hunk */ char *end; /* end of hunk */ char *pre_start; /* start of pre-allocated hunk */ char *post_end; /* end of post-allocated hunk */ int tag; ngx_fd_t fd; }; typedef struct ngx_chain_s ngx_chain_t; struct ngx_chain_s { ngx_hunk_t *hunk; ngx_chain_t *next; }; #define ngx_create_temp_hunk(pool, size, before, after) \ ngx_get_hunk(pool, size, before, after) #define ngx_add_hunk_to_chain(chain, h, pool, error) \ do { \ ngx_test_null(chain, ngx_create_chain_entry(pool), error); \ chain->hunk = h; \ chain->next = NULL; \ } while (0); ngx_hunk_t *ngx_get_hunk(ngx_pool_t *pool, int size, int before, int after); #endif /* _NGX_CHUNK_H_INCLUDED_ */