文档介绍:goahead webserver源码分析
  (2010-01-17 10:12:16)
标签: 
杂谈
main()
      |
      |--websOpenServer()
      |             |-- websOpenListen()
      |                           |--socketOpenConnection()
      |                                           |--打开webServer服务器
      |                                           |--初化socket_t结构(ept()回调函数(socket_t sp->accept= ept)等)
      |                                           |--把socket_t结构加入数组socketList
      |            
      |
      |--websUrlHandlerDefine()
      |                |--初始化websUrlHandlerType结构的websUrlHandler数组
      |                |--将urlPrefix和回调函数绑定在websUrlHandler[websUrlHandlerMax]中
      |
      |--websUrlHandlerDefine(websDefaultHandler)
      |                |--初始化websUrlHandlerType结构的websUrlHandler数组
      |                |--将urlPrefix和回调函数绑定在websUrlHandler[websUrlHandlerMax]中
      |         
      |
      |
      |--websFormDefine()
      |               |--初始化symbol table结构sym_t,把名字和回调函数名放进sym_t结构
      |               |--把sym_t结构放进hash表中
      |
      |--websAspDefine()
      |               |--初始化symbol table结构sym_t,把名字和回调函数名放进sym_t结构
      |               |--把sym_t结构放进hash表中
      |
      |
      |(main loop)
   ----|--socketReady(-1) || socketSelect(-1, 1000)
   ^                  |--轮询socketList        |--轮询socketList中的handlerMask
   |  |                |--中的几个变量        |--改变socketList中的currentEvents
   |  |
   |  |--socketProcess()
   ^  |              |--轮询socketList[]
   |  |               |--socketReady()
   |  |               |--socketDoEvent()
   |  |                                |--如果有新的连接(来自listenfd)ept()
   |  |                                                    |--调用socketAlloc()初始化socket_t结构
   |  |                                                    |--把socket_t结构加入 socketList数组
   |  |                                                    |--调用socket_t sp->accept()回调函数
   |  |
   |  |                                |--如