1. 说明
- 一个Poller类,使用了EventLoop,Channel
- 这时候才发现这是个虚基类…不过EventLoop中还有调用Poller::cancel(),虚基类中没这个函数…可以这样调用吗
2. 变量
-
类型定义
- ChannelList,Channel*列表
- ChannelMap,<int,Channel*>类型的map
-
ChannelMap channels_;
- 保护类型
-
EventLoop* ownerLoop_;
- EventLoop对象
3. 函数
-
构造
- 赋值ownerLoop_
-
析构
- 虚析构,默认析构,需要子类实现,
-
virtual Timestamp poll(int timeoutMs, ChannelList* activeChannels) = 0;
- 纯虚函数
-
virtual void updateChannel(Channel* channel) = 0;
-
virtual void removeChannel(Channel* channel) = 0;
- 两个纯虚函数,必须由子类实现
-
virtual bool hasChannel(Channel* channel) const;
- 看是否有参数中这个channel
-
static Poller* newDefaultPoller(EventLoop* loop);
- 在Poller/DefaultPoller.cc中实现了,决定使用PollPoller还是EPollPoller
-
void assertInLoopThread() const
- 调用ownerLoop_->assertInLoopThread();