The abstract base class TimerHandler contains the following public member functions:
| [double delay]void sched | schedule a timer to expire delay seconds in the future |
| [double delay]void resched | reschedule a timer (similar to []sched, but timer may be pending) |
| []void cancel | cancel a pending timer |
| []int status | returns timer status (either TIMER_IDLE, TIMER_PENDING, or TIMER_HANDLING) |
The abstract base class TimerHandler contains the following protected members:
| [Event* e]virtual void expire | =0 | this method must be filled in by the timer client |
| [Event* e]virtual void handle | consumes an event; invokes expire() and sets status_ of the timer appropriately | |
| int status
_ |
keeps track of the current timer status | |
| Event event
_ |
event to be consumed upon timer expiration |
The pure virtual function expire() must be defined by the timer classes deriving from this abstract base class.
Finally, two private inline functions are defined:
inline void _sched(double delay) {
(void)Scheduler::instance().schedule(this, &event_, delay);
}
inline void _cancel() {
(void)Scheduler::instance().cancel(&event_);
}
From this code we can see that timers make use of methods of the Scheduler class.