Spaces:
Paused
Paused
class TimerThread : public hv::EventLoopThread { | |
public: | |
std::atomic<hv::TimerID> nextTimerID; | |
TimerThread() : EventLoopThread() { | |
nextTimerID = 0; | |
start(); | |
} | |
virtual ~TimerThread() { | |
stop(); | |
join(); | |
} | |
public: | |
// setTimer, setTimeout, killTimer, resetTimer thread-safe | |
hv::TimerID setTimer(int timeout_ms, hv::TimerCallback cb, uint32_t repeat = INFINITE) { | |
hv::TimerID timerID = ++nextTimerID; | |
loop()->setTimerInLoop(timeout_ms, cb, repeat, timerID); | |
return timerID; | |
} | |
// alias javascript setTimeout, setInterval | |
hv::TimerID setTimeout(int timeout_ms, hv::TimerCallback cb) { | |
return setTimer(timeout_ms, cb, 1); | |
} | |
hv::TimerID setInterval(int interval_ms, hv::TimerCallback cb) { | |
return setTimer(interval_ms, cb, INFINITE); | |
} | |
void killTimer(hv::TimerID timerID) { | |
loop()->killTimer(timerID); | |
} | |
void resetTimer(hv::TimerID timerID, int timeout_ms = 0) { | |
loop()->resetTimer(timerID, timeout_ms); | |
} | |
}; | |