线程池多反应堆服务器webserver
前言
参考:爱编程的大丙
一、项目框架

Dispatcher类
Dispatcher类:基类,接口类,同子类(select、poll、epoll)实现多态。
反应堆模型
反应堆模型:提供处理fd的方法。按理说,每个channel的回调函数可以不同,但是此项目只有两类fd:①lfd,监听fd,是tcp/httpServer的主线程使用,用于监听新的连接事件cfd,将cfd交给线程池的子线程处理;②cfd,socket通信fd,主要是线程池中的子线程处理http通信的分析和回应。
对于lfd(只有一个lfd),其只有readcallback,就是将新cfd交给线程池。
对于cfd,其有read、write、destroycallback,3个回调函数,虽然有多个cfd,每个cfd要处理的内容是一致的,即:
readcallback读取客户端http请求,并进行分析和组织回应,断开连接;
writecallback读取writebuffer中的http回应数据进行发送;
destroycallback删除对应的Tcpconnection对象。
所以每个cfd的3个回调函数其实都是一样的,所以在Tcpconnection中,只需要定义3个回调函数就行。

多线程/线程池
多线程/线程池:多线程使用eventloop
tcp服务器
tcp服务器:基础框架。http服务器就是在tcpServer的基础上使用了http通信协议。
buffer
buffer:数据存储
HttpRequest
HttpRequest:分析http请求,组织回应response

HttpResponse
HttpResponse:根据httprequest分析得到的HttpResponse进行http回应数据的组织
TcpConnection
TcpConnection:IO处理