主页>技术社区>IT 技术与微软技术>服务器技术>流媒体服务器

lighttpd1.4.18代码分析(六)--处理连接fd的流程_2

eIT.com.cn 2009/12/9 19:31:42 阅读 67 次

打印


  在结构体connection,也就是保存连接相关数据的结构体中, 有一个叫state的成员, 顾名思义, 这个成员保存的是一个连接的状态,这里所说的状态与前面提到的IO状态是不同, IO状态是用于表示一个fd可读/可写/出错等, 而这个状态更多的是与协议相关的部分.它是一个枚举类型:

/* the order of the items should be the same as they are processed
 * read before write as we use this later */
typedef enum {
    CON_STATE_CONNECT,            // 连接
    CON_STATE_REQUEST_START,    // 开始获取请求
    CON_STATE_READ,                // 处理读
    CON_STATE_REQUEST_END,        // 请求结束
    CON_STATE_READ_POST,        // 处理读,但是是POST过来的数据
    CON_STATE_HANDLE_REQUEST,    // 处理请求
    CON_STATE_RESPONSE_START,    // 开始回复
    CON_STATE_WRITE,            // 处理写
    CON_STATE_RESPONSE_END,        // 回复结束
    CON_STATE_ERROR,            // 出错
    CON_STATE_CLOSE                // 连接关闭
} connection_state_t;

  为什么需要这些状态?因为lighttpd中采用了所谓状态机去处理连接,而这些状态就是状态机中的各种不同状态.

  在lighttpd的官方文档中, 对其使用的状态机有一篇文档,在这里:

  http://trac.lighttpd.net/trac/wiki/Docs%3AInternalHTTPStates






相关内容


热门栏目


特别声明


最新资讯
热讯排行



合作媒体友情链接
科技与视觉 软件开发教程 智慧城市生活网 息县通生活服务[移动版] 息县商圈[移动版] 美食菜谱
健康养生 百科常识 法律知识 科技频道 同城生活系统 留学考研学习


关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明
      Copyright © eIT.com.cn. All Rights Reserved. 豫ICP备20006152号-2