2.muduo之Channel

Muduo框架中的Channel类扮演关键角色,它封装了文件描述符并提供事件回调功能。Channel允许设置读写及关闭事件的回调,并能根据事件类型更新Poller(如epoll或poll)的操作。当检测到特定事件时,Channel会触发相应的回调函数。
摘要由CSDN通过智能技术生成

Channel类主要作用:1.将文件描述符(可能是socket类型,eventfd类型,timefd类型,signalfd类型)封装,通过该类设置各种事件的回调函数(例如读回调,写回调,关闭回调等)。2.可以设置自己的监听事件类型,然后根据该类型更新poller对象(epoll或者poll)对该类的操作(例如添加,修改,删除操作)。3.根据自己监听到的事件类型触发回调函数。

1.Channel.h文件

///
///一个能被选择的 I/O channel
//这个类不拥有自己的文件描述符
/// 这个文件描述符可能是socket,eventfd, timerfd,或者 signalfd.

class Channel : noncopyable
{
   
 public:
  typedef std::function<void()> EventCallback;	//事件回调
  typedef std::function<void(Timestamp)> ReadEventCallback;	//读事件回调

  Channel(EventLoop* loop, int fd);	//一个channel属于一个loop,一个loop可以对应多个channel
  ~Channel();

  void handleEvent(Timestamp receiveTime);	//处理事件
  void setReadCallback(ReadEventCallback cb)	//设置读回调
  {
    readCallback_ = std::move(cb); }
  void setWriteCallback(EventCallback cb)	//设置写回调
  {
    writeCallback_ = std::move(cb); }
  void setCloseCallback(EventCallback cb)	//设置关闭回调
  {
    closeCallback_ = std::move(cb); }
  void setErrorCallback(EventCallback cb)	//设置错误回调
  {
    errorCallback_ = std::move(cb); }

  /// 将此channel与shared_ptr管理的所有者对象绑定,
  ///阻止shared_ptr管理的所有者对象在handleEvent被销毁
  void tie(const std::shared_ptr<void>&);

  int fd() const {
    return fd_; }
  int events() const {
    return events_; }	//返回注册的事件
  void set_revents(int revt) {
    revents_ = revt; } // 设置监听到的事件类型
  // int revents() const { return revents_; }
  bool isNoneEvent() const {
    return events_ == kNoneEvent; 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值