goaheadwebserver源码分析报告.docx
文本预览下载声明
goahead?webserver源码分析
? (2010-01-17 10:12:16)
标签:?
HYPERLINK /c.php?t=blogk=%D4%D3%CC%B8ts=bpoststype=tag \t _blank 杂谈
1.一个txt文本架构图
main()
??????|
??????|--websOpenServer()
??????|?????????????|-- websOpenListen()
??????|???????????????????????????|--socketOpenConnection()
??????|???????????????????????????????????????????|--打开webServer服务器
??????|???????????????????????????????????????????|--初化socket_t结构(注册websAccept()回调函数(socket_t sp-accept= websAccept)等)
??????|???????????????????????????????????????????|--把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)就调用socketAccept()
???|??|????????????????????????????????????????????????????|--调用socketAlloc()初始化socket_t结构
???|??|????????????????????????????????????????????????????|--把socket_t结构加入 socketList数组
???|??|????????????????????????????????????????????????????|--调用socket_t sp-accept()回调函数
???|??|
显示全部