mFrame
載入中...
搜尋中...
無符合項目
TimerScheduler.h
1
7#ifndef MFRAME_3B90E2BA_6408_488A_8ECE_2AEE76F41A39
8#define MFRAME_3B90E2BA_6408_488A_8ECE_2AEE76F41A39
9
10/* ***************************************************************************************
11 * Include
12 */
13
14//----------------------------------------------------------------------------------------
15#include "./../lang/Memory.h"
16#include "./../lang/NonCopyable.h"
17#include "./../lang/Object.h"
18#include "./../lang/Updatable.h"
19#include "./../util/Container.h"
20//----------------------------------------------------------------------------------------
21
22/* ***************************************************************************************
23 * Namespace
24 */
25namespace ufm::util {
26 class TimerScheduler;
27} // namespace ufm::util
28
29/* ***************************************************************************************
30 * Class/Interface/Struct/Enum
31 */
32
54 /* *************************************************************************************
55 * Class/Interface/Struct/Enum
56 */
57 public:
58 struct Task;
59 struct Block;
60
61 /* *************************************************************************************
62 * Variable
63 */
64 private:
65 ufm::lang::Memory vMemory;
66 int vSize;
67
68 /* *************************************************************************************
69 * Abstract Method
70 */
71
72 /* *************************************************************************************
73 * Construct Method
74 */
75 public:
85
95 template <size_t N>
96 TimerScheduler(uint32 (&buffer)[N])
97 : TimerScheduler(ufm::lang::Memory(buffer, sizeof(buffer))) {
98 return;
99 }
100
107 virtual ~TimerScheduler(void) override;
108
109 /* *************************************************************************************
110 * Operator Method
111 */
112
113 /* *************************************************************************************
114 * Override - ufm::util::Container
115 */
116 public:
124 virtual void clear(void) override;
125
131 virtual bool isEmpty(void) const override;
132
140 virtual int size(void) const override;
141
142 /* *************************************************************************************
143 * Override - ufm::lang::Updatable
144 */
145 public:
152 virtual void update(void) override;
153
154 /* *************************************************************************************
155 * Public Method
156 */
157 public:
169 bool schedule(Task& task, uint64 delayMicroseconds);
170
182 inline bool scheduleAtMilliseconds(Task& task, uint64 delayMilliseconds) {
183 return this->schedule(task, delayMilliseconds * 1000);
184 }
185
197 inline bool scheduleAtSeconds(Task& task, uint64 delaySeconds) {
198 return this->schedule(task, delaySeconds * 1000000);
199 }
200
201 /* *************************************************************************************
202 * Protected Method
203 */
204
205 /* *************************************************************************************
206 * Private Method
207 */
208
209 /* *************************************************************************************
210 * Static Variable
211 */
212
213 /* *************************************************************************************
214 * Static Method
215 */
216};
217
225 /* *************************************************************************************
226 * Method
227 */
228
238 virtual void timerTask(ufm::util::TimerScheduler& scheduler) abstract;
239};
240
251
252/* ***************************************************************************************
253 * End of file
254 */
255
256#endif /* MFRAME_3B90E2BA_6408_488A_8ECE_2AEE76F41A39 */
動態記憶體管理類別
Definition Memory.h:38
物件基底類別
Definition Object.h:63
計時器任務排程器
Definition TimerScheduler.h:53
virtual bool isEmpty(void) const override
檢查此集合是否不包含任何元素
bool scheduleAtMilliseconds(Task &task, uint64 delayMilliseconds)
排程延遲任務(毫秒精度)
Definition TimerScheduler.h:182
TimerScheduler(uint32(&buffer)[N])
建構計時器排程器(模板版本)
Definition TimerScheduler.h:96
virtual void update(void) override
更新方法
virtual void clear(void) override
從此集合中刪除所有元素(可選操作)
bool schedule(Task &task, uint64 delayMicroseconds)
排程延遲任務(微秒精度)
bool scheduleAtSeconds(Task &task, uint64 delaySeconds)
排程延遲任務(秒精度)
Definition TimerScheduler.h:197
virtual ~TimerScheduler(void) override
解構計時器排程器
virtual int size(void) const override
返回此集合中的元素數量
TimerScheduler(const ufm::lang::Memory &memory)
建構計時器排程器
Definition Iterable.h:28
禁止複製的結構
Definition NonCopyable.h:38
[Interface] 定義可更新的物件介面
Definition Updatable.h:38
容器介面,定義所有集合容器的基本操作。
Definition Container.h:176
計時器任務排程資料塊
Definition TimerScheduler.h:247
TimerScheduler::Task * task
Definition TimerScheduler.h:248
uint64 time
Definition TimerScheduler.h:249
計時器任務抽象介面
Definition TimerScheduler.h:224
virtual void timerTask(ufm::util::TimerScheduler &scheduler) override
計時器任務執行方法