网站大量收购独家精品文档,联系QQ:2885784924

lighttpd1.4.18代码分析(四).doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lighttpd1.4.18代码分析(四).doc

  lighttpd1.4.18代码分析(四)   前面介绍了lighttpd使用的p;(srv_socket-gt;fde_ndx), srv_socket-gt;fd, FDEVENT_IN);     }     return 0; }   在这里, 调用函数fdevent_register注册fd到IO事件处理器中, 对于服务器监听fd而言,   它在fdnode中的回调函数handler是函数ber of events */             int revents;             int fd_ndx;             fd_ndx = -1;             do {                 fdevent_handler handler;                 void *context;                 handler_t r;                 // 获得处理这些事件的函数指针 fd等                 // 获得下一个fd在fdarray中的索引                 fd_ndx  = fdevent_event_next_fdndx (srv-gt;ev, fd_ndx);                 // 获得这个fd要处理的事件类型                 revents = fdevent_event_get_revent (srv-gt;ev, fd_ndx);                 // 获取fd                 fd      = fdevent_event_get_fd     (srv-gt;ev, fd_ndx);                 // 获取回调函数                 handler = fdevent_get_handler(srv-gt;ev, fd);                 // 获取处理相关的context(对server是server_socket指针, 对client是connection指针)                 context = fdevent_get_context(srv-gt;ev, fd);                 /* connection_handle_fdevent needs a joblist_append */                 // 进行处理                 switch (r = (*handler)(srv, context, revents)) {                 case HANDLER_FINISHED:                 case HANDLER_GO_ON:                 case HANDLER_WAIT_FOR_EVENT:                 case HANDLER_WAIT_FOR_FD:                     break;                 case HANDLER_ERROR:                     /* should never happen */                     SEGFAULT();                    12345下一页 ....,。break;                 default:                     log_error_ost 100 connections directly      *      * p out after 100 to give the p; NULL != (con = connection_accept(srv, srv_socket)); loops++) {         handler_t r;         // 这里马上进入状态机中进行处理仅仅对应状态为CON_STATE_REQUEST_START这一段         // 也就是保存连接的时间以及设置一些计数罢了         connection_state_machine(srv, con);         switch(r = plugins_call_handle_joblist(srv, con)) {         case HANDLER_FINISHED:         case HANDLER_GO_ON:             break;         default:

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档