diff options
author | crupest <crupest@outlook.com> | 2018-09-25 13:37:33 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2018-09-25 13:37:33 +0800 |
commit | ccbc293c0158d4450c0db344474193f17925403f (patch) | |
tree | 1ecde3132b3299ab2f272f541a76bced67f983b1 /src/timer.h | |
parent | 184c3b2b39d3fa34f9349a7d7fbebe49bc62f7fc (diff) | |
parent | ea4b0966d8eb5a8e76dfbe4d833a07a4797a3284 (diff) | |
download | cru-ccbc293c0158d4450c0db344474193f17925403f.tar.gz cru-ccbc293c0158d4450c0db344474193f17925403f.tar.bz2 cru-ccbc293c0158d4450c0db344474193f17925403f.zip |
Merge branch 'master' into issue4-dev
Diffstat (limited to 'src/timer.h')
-rw-r--r-- | src/timer.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/timer.h b/src/timer.h new file mode 100644 index 00000000..9884e46a --- /dev/null +++ b/src/timer.h @@ -0,0 +1,43 @@ +#pragma once + + +#include "system_headers.h" +#include <memory> +#include <map> +#include <chrono> + +#include "base.h" +#include "application.h" + +namespace cru +{ + class TimerManager : public Object + { + public: + static TimerManager* GetInstance() + { + return Application::GetInstance()->GetTimerManager(); + } + + public: + TimerManager() = default; + TimerManager(const TimerManager& other) = delete; + TimerManager(TimerManager&& other) = delete; + TimerManager& operator=(const TimerManager& other) = delete; + TimerManager& operator=(TimerManager&& other) = delete; + ~TimerManager() override = default; + + UINT_PTR CreateTimer(UINT milliseconds, bool loop, ActionPtr action); + void KillTimer(UINT_PTR id); + ActionPtr GetAction(UINT_PTR id); + + private: + std::map<UINT_PTR, ActionPtr> map_{}; + UINT_PTR current_count_ = 0; + }; + + using TimerTask = CancelablePtr; + + TimerTask SetTimeout(std::chrono::milliseconds milliseconds, ActionPtr action); + TimerTask SetInterval(std::chrono::milliseconds milliseconds, ActionPtr action); +} |