事件分发类Channel
事件分发器Channel的数据成员如下:
//定义事件类型变量
static const int kNoneEvent; //无事件
static const int kReadEvent; //可读事件
static const int kWriteEvent; //可写事件
EventLoop *loop_; //channel所属的loop
const int fd_; //channel负责的文件描述符
int events_; //注册的事件
int revents_; //poller设置的就绪的事件
int index_; //被poller使用的下标
bool logHup_; //是否生成某些日志
boost::weak_ptr<void> tie_; //
bool tied_;
bool eventHandling_; //是否处于处理事件中
bool addedToLoop_;
ReadEventCallback readCallback_; //读事件回调
EventCallback writeCallback_; //写事件回调
EventCallback closeCallback_; //关闭事件回调
ReadEventCallback errorCallback_; //错误事件回调
其中EventCallback和ReadEventCallback的声明如下:
typedef boost::function<void()> EventCallback; //事件回调函数对象类型
typedef boost::function<void(Timestamp)> ReadEventCallback; //读事件回调函数对象类型
//处理事件
void handleEvent(Timestamp receiveTime);
//设置可读事件回调
void setReadCallback(const ReadEventCallback &cb)
{
readCallback_ = cb;
}
//设置可写事件回调
void setWriteCallback(const EventCallback &cb)
{
writeCallback_ = cb;
}
//设置关闭事件回调
void setCloseCallback(const EventCallback &cb)
{
closeCallback_ = cb;
}
//设置错误事件回调
void setErrorCallback(const EventCallback &cb)
{
errorCallback_ = cb;
}
void tie(c