ngx_connection_t结构体

ngx_connection_t结构体

//服务器的被动连接
 
struct ngx_connection_s {
    //连接未使用时候,data域充当连接链表中的next指针.
	//当连接被使用时候,data域的意义由模块而定.
    void               *data;
	//连接对应的读事件
    ngx_event_t        *read;
	//连接对应的写事件
    ngx_event_t        *write;
 
    //套接字句柄
	ngx_socket_t        fd;
 
    //直接接收网络字节流的方法
	ngx_recv_pt         recv;
	//直接放松网络字节流的方法
    ngx_send_pt         send;
	//以ngx_chain链表为参数,接收网络字节流的方法
    ngx_recv_chain_pt   recv_chain;
	//以ngx_chain链表为参数,发送网络字节流的方法
    ngx_send_chain_pt   send_chain;
 
    //这个链接对应的listening_t监听对象.
	//此链接由ngx_listening_t监听的事件建立
	ngx_listening_t    *listening;
 
    //这个连接已经发送出去的字节数
	off_t               sent;
 
    //记录日志
	ngx_log_t          *log;
 
    //在accept一个新连接的时候,会创建一个内存池,而这个连接结束时候,会销毁一个内存池.
	//这里所说的连接是成功建立的tcp连接.内存池的大小由pool_size决定
	//所有的ngx_connect_t结构体都是预分配的
	ngx_pool_t         *pool;
 
    //连接客户端的结构体
	struct sockaddr    *sockaddr;
    //连接客户端的结构体长度
	socklen_t           socklen;
	//连接客户端的ip(字符串形式)
    ngx_str_t           addr_text;
 
#if (NGX_SSL)
    ngx_ssl_connection_t  *ssl;
#endif
 
    //本机中监听端口对应的socketaddr结构体
	//也就是listen监听对象中的socketaddr成员
	struct sockaddr    *local_sockaddr;
 
    //用于接收和缓存客户端发来的字符流
	ngx_buf_t          *buffer;
 
    //该字段表示将该连接以双向链表形式添加到cycle结构体中的
	//reusable_connections_queen双向链表中,表示可以重用的连接.
	ngx_queue_t         queue;
 
    //连接使用次数,每次建立一条来自客户端的连接,
	//或者建立一条与后端服务器的连接,number+1
	ngx_atomic_uint_t   number;
 
    //处理请求的次数
	ngx_uint_t          requests;
 
    //
	unsigned            buffered:8;
 
    //日志级别
	unsigned            log_error:3;     /* ngx_connection_log_error_e */
 
    //不期待字符流结束
	unsigned            unexpected_eof:1;
    //连接超时
	unsigned            timedout:1;
    //连接处理过程中出现错误
	unsigned            error:1;
    //标识此链接已经销毁,内存池,套接字等都不可用
	unsigned            destroyed:1;
 
    //连接处于空闲状态
	unsigned            idle:1;
    //连接可以重用
	unsigned            reusable:1;
    //连接关闭
	unsigned            close:1;
 
    //正在将文件中的数据法网另一端
	unsigned            sendfile:1;
	//连接中发送缓冲区的数据高于低潮,才发送数据.
	//与ngx_handle_write_event方法中的lowat相对应
    unsigned            sndlowat:1;
	//使用tcp的nodely特性
    unsigned            tcp_nodelay:2;   /* ngx_connection_tcp_nodelay_e */
    //使用tcp的nopush特性
	unsigned            tcp_nopush:2;    /* ngx_connection_tcp_nopush_e */
 
#if (NGX_HAVE_IOCP)
    unsigned            accept_context_updated:1;
#endif
 
#if (NGX_HAVE_AIO_SENDFILE)
    unsigned            aio_sendfile:1;
    ngx_buf_t          *busy_sendfile;
#endif
 
#if (NGX_THREADS)
    ngx_atomic_t        lock;
#endif
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值