Chinaunix首页 | 论坛 | 博客
  • 博客访问: 444082
  • 博文数量: 70
  • 博客积分: 3170
  • 博客等级: 中校
  • 技术积分: 756
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-06 16:47
文章分类

全部博文(70)

文章存档

2011年(22)

2010年(33)

2009年(5)

2008年(10)

分类: C/C++

2010-05-28 17:36:18

任务:
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 连接超时





阅读(1188) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~