代码拉取完成,页面将自动刷新
/*
channel用于每一个socket连接的事件分发
*/
#pragma once
#include <sys/epoll.h>
#include <unistd.h>
#include <functional>
#include <memory>
using namespace std;
class EventLoop;
class HttpData;
class Channel{
private:
using CallBack=function<void()>;
CallBack m_readHandler;
CallBack m_writeHandler;
CallBack m_errorHandler;
CallBack m_connHandler;
public:
Channel(EventLoop *loop);
Channel(EventLoop *loop, int fd);
~Channel();
int getFd();
void setHolder(std::shared_ptr<HttpData> holder);
std::shared_ptr<HttpData> getHolder();
void setReadHandler(CallBack &&readHandler){
m_readHandler=readHandler;
}
void setWriteHandler(CallBack &&writeHandler) {
m_writeHandler = writeHandler;
}
void setErrorHandler(CallBack &&errorHandler) {
m_errorHandler = errorHandler;
}
void setConnHandler(CallBack &&connHandler) {
m_connHandler = connHandler;
}
void handleRead();
void handleWrite();
void handleError(int fd, int err_num, std::string short_msg);
void handleConn();
void handleEvents();
void setRevents(uint32_t ev);
void setEvents(uint32_t ev);
uint32_t& getEvents();
bool EqualAndUpdateLastEvents();
uint32_t getLastEvents();
private:
EventLoop *m_loop;
int m_fd;
uint32_t m_events; //关心的事件, 由用户设置
uint32_t m_revents; //目前活动的事件, 由Eventloop或Poller设置
uint32_t m_last_events=0; //最后一个事件
//观测拥有本事件源的HTTP连接
std::weak_ptr<HttpData> m_holder;
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。