#ifndef _NGX_BUF_H_INCLUDED_
#define _NGX_BUF_H_INCLUDED_
#include <ngx_config.h>
#include <ngx_core.h>
ngx_buf_tag_t;
ngx_buf_t;
struct ngx_buf_s { … };
struct ngx_chain_s { … };
ngx_bufs_t;
ngx_output_chain_ctx_t;
ngx_output_chain_filter_pt;
ngx_output_chain_aio_pt;
struct ngx_output_chain_ctx_s { … };
ngx_chain_writer_ctx_t;
#define NGX_CHAIN_ERROR …
#define ngx_buf_in_memory(b) …
#define ngx_buf_in_memory_only(b) …
#define ngx_buf_special(b) …
#define ngx_buf_sync_only(b) …
#define ngx_buf_size(b) …
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_buf(pool) …
#define ngx_calloc_buf(pool) …
ngx_chain_t *ngx_alloc_chain_link(ngx_pool_t *pool);
#define ngx_free_chain(pool, cl) …
ngx_int_t ngx_output_chain(ngx_output_chain_ctx_t *ctx, ngx_chain_t *in);
ngx_int_t ngx_chain_writer(void *ctx, ngx_chain_t *in);
ngx_int_t ngx_chain_add_copy(ngx_pool_t *pool, ngx_chain_t **chain,
ngx_chain_t *in);
ngx_chain_t *ngx_chain_get_free_buf(ngx_pool_t *p, ngx_chain_t **free);
void ngx_chain_update_chains(ngx_pool_t *p, ngx_chain_t **free,
ngx_chain_t **busy, ngx_chain_t **out, ngx_buf_tag_t tag);
off_t ngx_chain_coalesce_file(ngx_chain_t **in, off_t limit);
ngx_chain_t *ngx_chain_update_sent(ngx_chain_t *in, off_t sent);
#endif