diff options
author | Yuqian Yang <crupest@outlook.com> | 2018-09-25 05:30:01 +0000 |
---|---|---|
committer | Yuqian Yang <crupest@outlook.com> | 2018-09-25 05:30:01 +0000 |
commit | ea4b0966d8eb5a8e76dfbe4d833a07a4797a3284 (patch) | |
tree | e5918c686f27363bfacf7d47e4b93617872b908d /src/timer.h | |
parent | 001e1d955132a02a2f7effc841ab9e5ee425eda1 (diff) | |
parent | 03d078796ad31eb55d70ad0aa61254b301e989a6 (diff) | |
download | cru-ea4b0966d8eb5a8e76dfbe4d833a07a4797a3284.tar.gz cru-ea4b0966d8eb5a8e76dfbe4d833a07a4797a3284.tar.bz2 cru-ea4b0966d8eb5a8e76dfbe4d833a07a4797a3284.zip |
Merge branch 'testing' into 'master'
Add CI.
See merge request crupest/CruUI!5
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); +} |