Kitura是IBM开发的一个Web框架
本系列文章主要用于学习Kitura源码,关于如何使用Kitura请参见IBM教程
需要对Swift 3.0、其他Web框架有一定了解
KituraNet模块主要类图如下所示
一次完整的HTTP请求流程如下:
1、HTTPServer创建一个Socket,Socket监听端口号
2、当客户端发来请求时调用SocketManager的handle函数
1)socket.setBlocking(mode: false)
2)新建一个 IncomingHTTPSocketProcessor
a、新建PseudoSynchronousReader
a、新建HTTPRequest
b、新建HTTPResponse
3)新建一个 IncomingSocketHandler
a、用Socket新建一个DispatchSourceRead,设置setEventHandler
3、请求到达时,在EventHandler里socket把数据读到buffer里,processor处理buffer
4、request解析buffer(解析函数的实现在HTTPIncomingMessage中),返回status
5、最后调用ServerDelegate的handle函数
6、main函数,用户新建的Router作为Server的Delegate
a、新建RouterRequest
b、新建RouterResponse
c、由RouterElementWalker把Request分发到各个RouterElement
7、RouterElement匹配每一个RouterMiddleware