(一)
1、Event的定义:
class Event {
public:
Event* next_; //事件链表中指向的下一个事件的指针
Event* prev_; //事件链表中指向的下一个事件的指针
Handler* handler_; //要处理事件时调用的句柄
double time_; //事件的执行时间
scheduler_uid_t uid_; //唯一标识一个事件的id,在schedule()中初始化为1
Event() : time_(0), uid_(0) {} //一个事件的构造函数,初始化变量time_以及uid_
};
当事件的调度时间到达时,改时间传递该它的句柄handler_来处理。
2、Schedule类的定义:
class Scheduler : public TclObject {
public:
static Scheduler& instance() {
return (*instance_); // 调度的通用入口
}
void schedule(Handler*, Event*, double delay); // 调度器
virtual void run(); // 执行调度
virtual void cancel(Event*) = 0; // 取消事件
virtual void insert(Event*) = 0; // 将事件插入调度队列中
virtual Event* lookup(scheduler_uid_t uid) = 0; // 查找事件
virtual Event* deque() = 0; /