线程池多反应堆服务器webserver(c++)

线程池多反应堆服务器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处理

相关推荐
Privasa-隐私实验室1 天前
全程无死角安全测评|从开机上锁、硬核加密到彻底销毁,Privasa 全生命周期隐私防护详解
笔记·安全·本地存储·隐私安全·aes-256
春生野草1 天前
个人笔记——C语言字符串、树
c语言·开发语言·笔记
九硕智慧建筑一体化厂家1 天前
无线动能开关|校园教学空间便捷智能控电方案
笔记·智慧城市
摇滚侠1 天前
Codebuddy 官网 Codebuddy IntelliJ IDEA 插件 阅读笔记 2
java·笔记·intellij-idea
冰心孤城1 天前
文声图防御框架原理笔记:Interpret then Deactivate(ItD)
笔记
Daimuovo1 天前
盘古模型热带气旋快速增强预报评估
经验分享·笔记·其他
神明不懂浪漫1 天前
【第三章】链表
开发语言·数据结构·经验分享·笔记·链表
今儿敲了吗1 天前
Python——模块、异常、面向对象
开发语言·笔记·python
kdxiaojie1 天前
Linux 驱动研究 —— V4L2 (15)
linux·运维·笔记·学习
摇滚侠1 天前
Java 全栈开发实战教程 课程笔记 39-56
java·开发语言·笔记