frodo-wii/timer.hh

47 lines
604 B
C++

#ifndef __TIMER_HH__
#define __TIMER_HH__
class TimeoutHandler;
class TimerController
{
public:
TimerController();
int arm(TimeoutHandler *which, int ms);
void disarm(TimeoutHandler *which);
void tick();
private:
int n_handlers;
TimeoutHandler **handlers;
};
class TimeoutHandler
{
friend class TimerController;
public:
TimeoutHandler()
{
this->timeout = 0;
this->timer_id = -1;
}
void tick()
{
this->timeout--;
if (this->timeout == 0)
this->timeoutCallback();
}
virtual void timeoutCallback() = 0;
protected:
int timeout;
int timer_id;
};
#endif /* __TIMER_HH__ */