diff options
Diffstat (limited to 'src/event/ngx_event_connect.h')
-rw-r--r-- | src/event/ngx_event_connect.h | 53 |
1 files changed, 41 insertions, 12 deletions
diff --git a/src/event/ngx_event_connect.h b/src/event/ngx_event_connect.h index 61c268f37..f8a7de944 100644 --- a/src/event/ngx_event_connect.h +++ b/src/event/ngx_event_connect.h @@ -13,27 +13,56 @@ #include <ngx_event.h> -typedef struct { - ngx_peers_t *peers; - ngx_uint_t cur_peer; - ngx_uint_t tries; +#define NGX_PEER_KEEPALIVE 1 +#define NGX_PEER_NEXT 2 +#define NGX_PEER_FAILED 4 + + +typedef struct ngx_peer_connection_s ngx_peer_connection_t; + +typedef ngx_int_t (*ngx_event_get_peer_pt)(ngx_peer_connection_t *pc, + void *data); +#if (NGX_SSL) +typedef void (*ngx_event_save_peer_pt)(ngx_peer_connection_t *pc, void *data); +#endif +typedef void (*ngx_event_free_peer_pt)(ngx_peer_connection_t *pc, void *data, + ngx_uint_t state); + + +struct ngx_peer_connection_s { + ngx_connection_t *connection; + + struct sockaddr *sockaddr; + socklen_t socklen; + ngx_str_t *name; + + ngx_uint_t tries; + + ngx_event_get_peer_pt get; + ngx_event_free_peer_pt free; + void *data; + +#if (NGX_SSL) + ngx_ssl_session_t *ssl_session; + ngx_event_save_peer_pt save_session; +#endif - ngx_connection_t *connection; #if (NGX_THREADS) - ngx_atomic_t *lock; + ngx_atomic_t *lock; #endif - int rcvbuf; + int rcvbuf; - ngx_log_t *log; + ngx_log_t *log; - unsigned cached:1; - unsigned log_error:2; /* ngx_connection_log_error_e */ -} ngx_peer_connection_t; + unsigned cached:1; + unsigned log_error:2; /* ngx_connection_log_error_e */ +}; ngx_int_t ngx_event_connect_peer(ngx_peer_connection_t *pc); -void ngx_event_connect_peer_failed(ngx_peer_connection_t *pc, ngx_uint_t down); +ngx_int_t ngx_event_get_peer(ngx_peer_connection_t *pc, void *data); + #endif /* _NGX_EVENT_CONNECT_H_INCLUDED_ */ |