| #ifndef _NGX_EVENT_PROXY_H_INCLUDED_ |
| #define _NGX_EVENT_PROXY_H_INCLUDED_ |
| |
| |
| #include <ngx_config.h> |
| #include <ngx_core.h> |
| #include <ngx_hunk.h> |
| #include <ngx_file.h> |
| #include <ngx_files.h> |
| #include <ngx_connection.h> |
| |
| |
| typedef struct ngx_event_proxy_s ngx_event_proxy_t; |
| |
| typedef int (*ngx_event_proxy_input_filter_pt)(ngx_event_proxy_t *p, |
| ngx_chain_t *chain); |
| typedef int (*ngx_event_proxy_output_filter_pt)(void *data, ngx_hunk_t *hunk); |
| |
| |
| struct ngx_event_proxy_s { |
| ngx_chain_t *read_hunks; |
| ngx_chain_t *last_read_hunk; |
| |
| ngx_chain_t *shadow_hunks; |
| |
| ngx_chain_t *in_hunks; |
| ngx_chain_t *last_in_hunk; |
| |
| ngx_chain_t *out_hunks; |
| ngx_chain_t *last_out_hunk; |
| |
| ngx_chain_t *free_hunks; |
| #if 0 |
| ngx_chain_t *last_free_hunk; |
| #endif |
| |
| ngx_hunk_t *busy_hunk; |
| |
| ngx_event_proxy_input_filter_pt input_filter; |
| void *input_data; |
| |
| ngx_event_proxy_output_filter_pt output_filter; |
| void *output_data; |
| |
| unsigned cachable:1; |
| unsigned block_upstream:1; |
| unsigned upstream_eof:1; |
| unsigned upstream_error:1; |
| unsigned downstream_eof:1; |
| unsigned downstream_error:1; |
| |
| int level; |
| |
| int allocated; |
| int block_size; |
| int max_block_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_pool_t *pool; |
| ngx_log_t *log; |
| |
| ngx_chain_t *preread_hunks; |
| #if 0 |
| ngx_chain_t *last_preread_hunk; |
| #endif |
| int preread_size; |
| |
| ngx_file_t *temp_file; |
| ngx_path_t *temp_path; |
| int number; |
| int random; |
| char *temp_file_warn; |
| }; |
| |
| |
| int ngx_event_proxy_read_upstream(ngx_event_proxy_t *p); |
| int ngx_event_proxy_write_to_downstream(ngx_event_proxy_t *p); |
| int ngx_event_proxy_write_chain_to_temp_file(ngx_event_proxy_t *p); |
| |
| |
| #endif /* _NGX_EVENT_PROXY_H_INCLUDED_ */ |