1
#ifndef NGX_HTTP_LUA_SOCKET_H
2
#define NGX_HTTP_LUA_SOCKET_H
5
#include "ngx_http_lua_common.h"
7
typedef struct ngx_http_lua_socket_upstream_s ngx_http_lua_socket_upstream_t;
11
int (*ngx_http_lua_socket_retval_handler)(ngx_http_request_t *r,
12
ngx_http_lua_socket_upstream_t *u, lua_State *L);
15
typedef void (*ngx_http_lua_socket_upstream_handler_pt)(ngx_http_request_t *r,
16
ngx_http_lua_socket_upstream_t *u);
20
ngx_http_lua_main_conf_t *conf;
21
ngx_uint_t active_connections;
23
/* queues of ngx_http_lua_socket_pool_item_t: */
29
} ngx_http_lua_socket_pool_t;
32
struct ngx_http_lua_socket_upstream_s {
33
ngx_http_lua_socket_retval_handler prepare_retvals;
34
ngx_http_lua_socket_upstream_handler_pt read_event_handler;
35
ngx_http_lua_socket_upstream_handler_pt write_event_handler;
37
ngx_http_lua_socket_pool_t *socket_pool;
39
ngx_http_lua_loc_conf_t *conf;
40
ngx_http_cleanup_pt *cleanup;
41
ngx_http_request_t *request;
42
ngx_peer_connection_t peer;
44
ngx_msec_t read_timeout;
45
ngx_msec_t send_timeout;
46
ngx_msec_t connect_timeout;
48
ngx_http_upstream_resolved_t *resolved;
50
ngx_chain_t *bufs_in; /* input data buffers */
51
ngx_chain_t *buf_in; /* last input data buffer */
52
ngx_buf_t buffer; /* receive buffer */
58
ngx_err_t socket_errno;
60
ngx_output_chain_ctx_t output;
61
ngx_chain_writer_ctx_t writer;
63
ngx_int_t (*input_filter)(void *data, ssize_t bytes);
64
void *input_filter_ctx;
68
ngx_chain_t *request_bufs;
72
unsigned request_sent:1;
76
unsigned is_downstream:1;
80
typedef struct ngx_http_lua_dfa_edge_s ngx_http_lua_dfa_edge_t;
83
struct ngx_http_lua_dfa_edge_s {
86
ngx_http_lua_dfa_edge_t *next;
91
ngx_http_lua_socket_upstream_t *upstream;
95
ngx_http_lua_dfa_edge_t **recovering;
96
} ngx_http_lua_socket_compiled_pattern_t;
100
ngx_http_lua_socket_pool_t *socket_pool;
103
ngx_connection_t *connection;
106
struct sockaddr_storage sockaddr;
110
} ngx_http_lua_socket_pool_item_t;
113
void ngx_http_lua_inject_socket_api(ngx_log_t *log, lua_State *L);
115
void ngx_http_lua_inject_req_socket_api(lua_State *L);
118
#endif /* NGX_HTTP_LUA_SOCKET_H */