|  |  | 
|  | /* | 
|  | * 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; | 
|  |  | 
|  | /* 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_ */ |