nginx/src/core/ngx_buf.h


/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#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 /* _NGX_BUF_H_INCLUDED_ */