类EventBase继承于类EventBases,继承于noncopyable. 其中noncopyable是一个去除了拷贝构造和赋值构造的类。
noncopyable:
class noncopyable {
public:
noncopyable() = default;
virtual ~nonocopyable() = default; noncopyable(const noncopyable& non) = delete;
noncopyable& operator=(const noncopyable& non) = delete;
};
EventBases是一个包含返回EventBase指针的纯虚函数的纯虚类。
EventBases:
class EventBases : public noncopyable {
public:
virtual EventBase* allocBase() = ;
};
EventBase是一个事件派发器,负责事件的添加,运行,循环处理。而实际的事件处理由EventsImp来完成,可以预见的是该类只有一个EventsImp类型的变量。
EventBase:
class EventBase : public EventBases {
public:
EventBase(int taskCapacity = ); //指定任务队列大小
~EventBase(); void loop_once(int waitMs);
void loop(); //进入事件处理循环
bool cancel(TimerId timerid); TimerId runAt();
TimerId runAfter(); EventBase& exit(); //退出事件循环
bool exited();
void wakeup(); //唤醒事件处理 void safeCall(Task&& task); //添加任务 std::unique_ptr<EventsImp> imp_; //实际的事件处理都由该变量来完成。
};
EventBase类中一些类型的定义:
Task: typedef std::function<void()> Task. Task是返回值为空的函数对象。
TimerId: typedef std::pair<int64_t, int64_t> TimerId. TimerId是包含两个int类型的pair。
EventBase可以看作是一个连接器,连接各个不同的类,接受或派发任务。