#ifndef _NGX_EVENT_PIPE_H_INCLUDED_ #define _NGX_EVENT_PIPE_H_INCLUDED_ #include #include #include typedef struct ngx_event_pipe_s ngx_event_pipe_t; typedef int (*ngx_event_pipe_input_filter_pt)(ngx_event_pipe_t *p, ngx_hunk_t *hunk); typedef int (*ngx_event_pipe_output_filter_pt)(void *data, ngx_chain_t *chain); struct ngx_event_pipe_s { ngx_chain_t *free_raw_hunks; ngx_chain_t *in; ngx_chain_t **last_in; ngx_chain_t *out; ngx_chain_t **last_out; ngx_chain_t *free; ngx_chain_t *busy; /* * the input filter i.e. that moves HTTP/1.1 chunks * from the raw hunks to an incoming chain */ ngx_event_pipe_input_filter_pt input_filter; void *input_ctx; ngx_event_pipe_output_filter_pt output_filter; void *output_ctx; unsigned read:1; unsigned cachable:1; unsigned upstream_done:1; unsigned upstream_error:1; unsigned upstream_eof:1; unsigned upstream_blocked:1; unsigned downstream_done:1; unsigned downstream_error:1; unsigned cyclic_temp_file:1; int hunks; ngx_bufs_t bufs; ngx_hunk_tag_t tag; size_t busy_size; off_t temp_offset; off_t max_temp_file_size; int temp_file_write_size; ngx_connection_t *upstream; ngx_connection_t *downstream; ngx_msec_t read_timeout; ngx_msec_t send_timeout; ssize_t send_lowat; ngx_pool_t *pool; ngx_log_t *log; ngx_chain_t *preread_hunks; int preread_size; ngx_file_t *temp_file; ngx_path_t *temp_path; char *temp_file_warn; /* STUB */ int num; }; int ngx_event_pipe(ngx_event_pipe_t *p, int do_write); int ngx_event_pipe_copy_input_filter(ngx_event_pipe_t *p, ngx_hunk_t *hunk); #endif /* _NGX_EVENT_PIPE_H_INCLUDED_ */