|  | 
 | /* | 
 |  * Copyright (C) Igor Sysoev | 
 |  * Copyright (C) Nginx, Inc. | 
 |  */ | 
 |  | 
 |  | 
 | #ifndef _NGX_EVENT_CONNECT_H_INCLUDED_ | 
 | #define _NGX_EVENT_CONNECT_H_INCLUDED_ | 
 |  | 
 |  | 
 | #include <ngx_config.h> | 
 | #include <ngx_core.h> | 
 | #include <ngx_event.h> | 
 |  | 
 |  | 
 | #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); | 
 | typedef void (*ngx_event_free_peer_pt)(ngx_peer_connection_t *pc, void *data, | 
 |     ngx_uint_t state); | 
 | typedef void (*ngx_event_notify_peer_pt)(ngx_peer_connection_t *pc, | 
 |     void *data, ngx_uint_t type); | 
 | typedef ngx_int_t (*ngx_event_set_peer_session_pt)(ngx_peer_connection_t *pc, | 
 |     void *data); | 
 | typedef void (*ngx_event_save_peer_session_pt)(ngx_peer_connection_t *pc, | 
 |     void *data); | 
 |  | 
 |  | 
 | struct ngx_peer_connection_s { | 
 |     ngx_connection_t                *connection; | 
 |  | 
 |     struct sockaddr                 *sockaddr; | 
 |     socklen_t                        socklen; | 
 |     ngx_str_t                       *name; | 
 |  | 
 |     ngx_uint_t                       tries; | 
 |     ngx_msec_t                       start_time; | 
 |  | 
 |     ngx_event_get_peer_pt            get; | 
 |     ngx_event_free_peer_pt           free; | 
 |     ngx_event_notify_peer_pt         notify; | 
 |     void                            *data; | 
 |  | 
 | #if (NGX_SSL || NGX_COMPAT) | 
 |     ngx_event_set_peer_session_pt    set_session; | 
 |     ngx_event_save_peer_session_pt   save_session; | 
 | #endif | 
 |  | 
 |     ngx_addr_t                      *local; | 
 |  | 
 |     int                              type; | 
 |     int                              rcvbuf; | 
 |  | 
 |     ngx_log_t                       *log; | 
 |  | 
 |     unsigned                         cached:1; | 
 |     unsigned                         transparent:1; | 
 |     unsigned                         so_keepalive:1; | 
 |  | 
 |                                      /* ngx_connection_log_error_e */ | 
 |     unsigned                         log_error:2; | 
 |  | 
 |     NGX_COMPAT_BEGIN(2) | 
 |     NGX_COMPAT_END | 
 | }; | 
 |  | 
 |  | 
 | ngx_int_t ngx_event_connect_peer(ngx_peer_connection_t *pc); | 
 | ngx_int_t ngx_event_get_peer(ngx_peer_connection_t *pc, void *data); | 
 |  | 
 |  | 
 | #endif /* _NGX_EVENT_CONNECT_H_INCLUDED_ */ |