任务:
TASK_SLEEPING task_new 时
TASK_RUNNING task_new 处理任务时,短暂
TASK_WOKEN_INIT task_new之后
TASK_WOKEN_IO IO资源已准备完成
TASK_WOKEN_SIGNAL 系统信号
TASK_WOKEN_MSG 无用
TASK_WOKEN_RES 各种会话释放
TASK_WOKEN_OTHER 无用
TASK_WOKEN_ANY __task_wakeup的同时清除?__task_wakeup在运行队列里没有该任务的情况下调用
---------------------------------------------------------------
会话:
SN_DIRECT cookie命中 该状态永远伴随着SN_ASSIGNED,因为命中了就不需要重新分配服务端
SN_ASSIGNED 分配了服务之后就设置这个参数,分配服务可能是重新分配,也可能是从cookie里分配
SN_ADDR_SET 该服务的地址已经设置,与!SI_ST_REQ关联 , sess_update_stream_int调用时
SN_BE_ASSIGNED 与AN_REQ_SWITCHING_RULES关联, http解析时候使用
SN_FORCE_PRST 与AN_REQ_SWITCHING_RULES关联,http解析时候使用
SN_MONITOR 表明该客户地址来自受监控的网络,http mode使用
SN_CURR_SESS 表明该会话已经连接上服务器 a connection is currently being counted on the server
SN_FRT_ADDR_SET 相关代理的监听地址和端口已经放入该会话中了
SN_REDISP 会话到服务重连时使用
SN_CONN_TAR 无用的状态
SN_REDIRECTABLE http使用
SN_TUNNEL 无用的状态
会话终止条件:
SN_ERR_NONE 无错,无需中止
SN_ERR_CLITO 客户端读写超时
SN_ERR_CLICL 客户端关闭
SN_ERR_SRVTO 服务端读写超时或连接超时
SN_ERR_SRVCL 服务端关闭
SN_ERR_PRXCOND 某种资源超过管理上的限制,如FD
SN_ERR_RESOURCE 系统资源不足,如FD
SN_ERR_INTERNAL 管理错误,如没有服务端
SN_ERR_MASK mask to get only session error flags
SN_ERR_SHIFT bit shift
/* session state at termination, bits values 0x10000 to 0x70000 (0-7 shift 16) */
#define SN_FINST_R 0x00010000 /* session ended during client request */
#define SN_FINST_C 0x00020000 /* session ended during server connect */
#define SN_FINST_H 0x00030000 /* session ended during server headers */
#define SN_FINST_D 0x00040000 /* session ended during data phase */
#define SN_FINST_L 0x00050000 /* session ended while pushing last data to client */
#define SN_FINST_Q 0x00060000 /* session ended while waiting in queue for a server slot */
#define SN_FINST_T 0x00070000 /* session ended tarpitted */
#define SN_FINST_MASK 0x00070000 /* mask to get only final session state flags */
#define SN_FINST_SHIFT 16 /* bit shift */
---------------------------------------------------------------------------------------------
流接口:
SI_ST_INI accept之后流接口的初始状态
SI_ST_REQ 我们需要向服务器发起一条新的连接
SI_ST_QUE 已经超过了这个服务端的最大连接数,我们需要等等再连接
SI_ST_TAR 我们需要在同一个IP地址上重试一次
SI_ST_ASS 服务已经分配到这个流了(实际上是已经分配到会话了 SN_ASSIGNED),接着我们就可以开始connect了
SI_ST_CON connect 已经成功发起,等待建立连接
SI_ST_CER 之前的连接发生了错误
SI_ST_EST 连接已经成功建立
SI_ST_DIS 连接已经处于关闭状态,或因为发生错误,或因为连接失败,但是还保留流、会话能信息
SI_ST_CLO 连接已经关闭,流已经没有存在的必要了
/* error types reported on the streams interface for more accurate reporting */
enum {
SI_ET_NONE = 0x0000, /* no error yet, leave it to zero */
SI_ET_QUEUE_TO = 0x0001, /* queue timeout */
SI_ET_QUEUE_ERR = 0x0002, /* queue error (eg: full) */
SI_ET_QUEUE_ABRT = 0x0004, /* aborted in queue by external cause */
SI_ET_CONN_TO = 0x0008, /* connection timeout */
SI_ET_CONN_ERR = 0x0010, /* connection error (eg: no server available) */
SI_ET_CONN_ABRT = 0x0020, /* connection aborted by external cause (eg: abort) */
SI_ET_CONN_OTHER = 0x0040, /* connection aborted for other reason (eg: 500) */
SI_ET_DATA_TO = 0x0080, /* timeout during data phase */
SI_ET_DATA_ERR = 0x0100, /* error during data phase */
SI_ET_DATA_ABRT = 0x0200, /* data phase aborted by external cause */
}
SI_FL_NONE accept 之后赋值
SI_FL_EXP connect 连接超时
阅读(1222) | 评论(0) | 转发(0) |