3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
8 #ifndef _NGX_EVENT_PIPE_H_INCLUDED_
9 #define _NGX_EVENT_PIPE_H_INCLUDED_
12 #include <ngx_config.h>
14 #include <ngx_event.h>
17 typedef struct ngx_event_pipe_s ngx_event_pipe_t
;
19 typedef ngx_int_t (*ngx_event_pipe_input_filter_pt
)(ngx_event_pipe_t
*p
,
21 typedef ngx_int_t (*ngx_event_pipe_output_filter_pt
)(void *data
,
25 struct ngx_event_pipe_s
{
26 ngx_connection_t
*upstream
;
27 ngx_connection_t
*downstream
;
29 ngx_chain_t
*free_raw_bufs
;
31 ngx_chain_t
**last_in
;
38 * the input filter i.e. that moves HTTP/1.1 chunks
39 * from the raw bufs to an incoming chain
42 ngx_event_pipe_input_filter_pt input_filter
;
45 ngx_event_pipe_output_filter_pt output_filter
;
50 unsigned single_buf
:1;
52 unsigned upstream_done
:1;
53 unsigned upstream_error
:1;
54 unsigned upstream_eof
:1;
55 unsigned upstream_blocked
:1;
56 unsigned downstream_done
:1;
57 unsigned downstream_error
:1;
58 unsigned cyclic_temp_file
:1;
69 off_t max_temp_file_size
;
70 ssize_t temp_file_write_size
;
72 ngx_msec_t read_timeout
;
73 ngx_msec_t send_timeout
;
79 ngx_chain_t
*preread_bufs
;
81 ngx_buf_t
*buf_to_file
;
83 ngx_temp_file_t
*temp_file
;
89 ngx_int_t
ngx_event_pipe(ngx_event_pipe_t
*p
, ngx_int_t do_write
);
90 ngx_int_t
ngx_event_pipe_copy_input_filter(ngx_event_pipe_t
*p
, ngx_buf_t
*buf
);
91 ngx_int_t
ngx_event_pipe_add_free_buf(ngx_event_pipe_t
*p
, ngx_buf_t
*b
);
94 #endif /* _NGX_EVENT_PIPE_H_INCLUDED_ */