2 Star 3 Fork 1

无趣的人民艺术家 / MuduoReactor

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

reactor

s00-s10是一个从零开始构建一个网络库的过程,摘自陈硕linux多线程服务端编程一书 没有用boost库,用C++11重写,net是该网络库的最终版

s00:一个什么都不做的reactor: 只有一个EventLoop,这个类对象的创建遵循one loop per thread原则,用一个threadId_类变量记住本对象所属线程

s01:增加reactor的几个关键结构,完成最核心的事件分发机制: (1)Channel class:提供用户注册事件回调函数的接口(setXXXCallback)以及注册用户感兴趣的事件(enableXXX), 在handleEvent执行用户的回调函数,生命期由owner class管理 (2)Poller class:封装IO multiplexing: linux poll(后续支持epoll),Poller不拥有Channel,通过updateChannel和 removeChannel register和unregister相应fd的事件,其维护一个fd到Channel的map,保存关注的fd(文件描述符), 将poll调用获得的当前活动IO事件交给调用方传入的activeChannels (3)EventLoop的loop中调用activeChannels的handleEvent函数

//s08 TcpConnection类新增三个接口: 1.发送数据接口send 2.写入事件handlewrite,如果数据没有一次性发送完,将送入发送缓冲区,触发POLLOUT事件 3.关闭socket上数据的写入shutdown

//s09 增加TcpConnector类,主动发起tcp连接,供TcpClient使用,TcpServer的socket关闭任务由Acceptor析构调用的 //但是这里创建的socket每次都是retry函数关闭又重新创建连接,没懂为什么这么处理 //EventLoop增加SIGPIPE信号处理类 //TcpConnection类新增两个回调: 1.WriteCompleteCallback m_writeCompleteCallback;数据发送完成回调 2.HighWaterMarkCallback m_highWaterMarkCallback;数据发送高水位回调

s10 update: TcpConnection 增加了一个forceclose接口,用在客户端程序中,其作用相当于handread收到0字节,直接断开tcp连接,清理channel 在测试程序test12.1中让loop停止模拟了这个情况 增加了TcpClient接口,在该类的实现中注意TcpClient析构函数中的实现,因为TcpClient析构之后,注册的setCloseCallback 函数不能调用了,所以重新注册了一个close回调函数

2018/8/2 net update: 1.增加EventLoopThreadPool线程池类,修改TcpSever支持多线程ioLoop,newConnection函数中 通过round-robin(轮询调度)的方式获取每个TcpConnection的ioLoop,同时修改TcpSever的connnecedDestory函数调用的 io线程

Repository Comments ( 0 )

Sign in to post a comment

About

根据muduo网络库,用C++11重新改写 expand collapse
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
1
https://git.oschina.net/DreamFly0/MuduoReactor.git
git@git.oschina.net:DreamFly0/MuduoReactor.git
DreamFly0
MuduoReactor
MuduoReactor
master

Search

101014 b92fc32e 1850385 101014 af024cb7 1850385