加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
EpollPoller.h 882 Bytes
一键复制 编辑 原始数据 按行查看 历史
TheSea 提交于 2024-10-07 11:34 . 完成了EpollPoller的部分
#pragma once
#include "Poller.h"
#include "Timestamp.h"
#include <vector>
#include <sys/epoll.h>
class Channel;
/*
* epoll的使用
* 1、epoll_create
* 2、epoll_ctl add/mod/del
* 3、epoll_wait
*/
class EpollPoller : public Poller{
public:
EpollPoller(EventLoop* loop);
~EpollPoller() override;
//重写基类Poller的抽象方法
Timestamp poll(int timeoutMs, ChannelList* activeChannels) override;
void updateChannel(Channel* channel) override;
void removeChannel(Channel* channel) override;
private:
static const int kInitEventListSize = 16;
//填写活跃的连接
void fillActiveChannels(int numEvents,ChannelList* activeChannels) const;
//更新Channel通道
void update(int operation, Channel* channel);
using EventList = std::vector<struct epoll_event>;
int epollFd_;
EventList events_;
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化