C++从0实现Reactor高并发网络服务器 复习与回顾(2)

C++从0实现Reactor高并发网络服务器 复习与回顾(1)

(4)增加Channel类:

将Channel对象的地址作为epoll_event结构体携带的数据。
并将一系列和epoll事件相关的代码都封装到Channel类中。

(5)第一次添加回调:

封装好的Channel类的handleevent函数中,我们判断事件是不是监听的fd有事件(新客户端连上来),或者是客户端连接的的fd有事件。这里只有2中情况,我们可以if else来写,但是情况多就复杂了,并且只能写死,无法实现定制的功能。
在这里我在Channel类中建了两个回调函数,分别对应服务端Channel的新连接,和客户端Channel的事件(过来的消息)。

(6)增加EventLoop类:

把服务端的Epoll和事件循环部分的代码封装成EventLoop类,代码更简洁。
此时EventLoop类中和Channel类中,都有Epoll类型的成员变量。(这里因为Channel类中需要Epoll,并且Channel和Epoll是多对一,Channel和EventLoop也是多对一)因此我们把Channel类中Epoll变量换成EventLoop类对象。

(7)增加TcpServer类:

现在在服务端程序中,一些代码啰里啰嗦的,我将其封装为TcpServer类,传进去服务端的地址和协议,并运行事件循环。这样代码更加模块化和简介。

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值