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); | |
| } | |
| }; | |