mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-27 05:54:20 +01:00
47 lines
604 B
C++
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__ */
|