acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
timer.h
1
// Deep Refactoring timer_handler by camilo on 2026-05-28 10:33 <3ThomasBorregaardSørensen!! Mummi!! Bilbo
2
#pragma once
3
4
5
//#include "timer.h"
6
//#include "timer_array.h"
7
//#include "acme/parallelization/task.h"
8
#include "acme/constant/timer.h"
9
10
11
DECLARE_ENUMERATION(e_timer, enum_timer);
12
13
14
class
timer
:
15
virtual
public
::timer_callback::base,
16
virtual
public
::particle
17
{
18
public
:
19
20
21
::pointer<::timer_handler> m_ptimerhandler;
22
::pointer<::timer_dispatch> m_ptimerdispatch;
23
::e_timer m_etimer;
24
class ::time m_time;
25
::timer_callback m_callback;
26
class ::time m_timeStart;
27
::i64 m_iCall = 0;
28
bool
m_bRet =
false
;
29
::pointer < ::particle > m_pcarrier1;
30
31
32
void
cancel(){m_bRet=
true
;}
33
34
void
restart() { m_timeStart.Now(); }
35
36
bool
should_call()
const
{
return
m_timeStart.elapsed() >= m_time; }
37
38
void
operator()(::timer *ptimer)
override
39
{
40
41
m_iCall++;
42
43
if
(m_callback)
44
{
45
46
m_callback(ptimer);
47
48
}
49
50
}
51
52
53
};
54
55
56
using
timer_map =
ø<::map<::e_timer, ::pointer<::timer>
>>;
57
58
59
using
timer_dispatch_map = ::map<::timer_dispatch *, ::timer_map >;
60
61
65
class
CLASS_DECL_ACME timer_handler :
66
virtual
public
::particle
67
{
68
public
:
69
70
71
class ::time m_timeResolution;
72
::timer_dispatch_map m_timermap;
73
74
//::pointer < manual_reset_happening > m_pmanualresethappeningWait;
75
76
//::pointer<::acme::timer_array> m_ptimera;
77
//PFN_TIMER m_pfnTimer;
78
//void * m_pvoidData;
79
//::procedure m_procedure;
80
//bool m_bRunning;
81
82
//
83
//#ifdef UNIVERSAL_WINDOWS
84
//
85
//
86
// ThreadPoolTimer ^ m_timer;
87
// timer * m_ptimer;
88
//
89
//#elif defined(WINDOWS)
90
//
91
// HANDLE m_hTimerQueue;
92
// HANDLE m_hTimer;
93
//
94
//#elif defined(__APPLE__)
95
//
96
// void * m_timer;
97
// void * m_queue;
98
//
99
//#else
100
101
//bool m_bInit;
102
//e_timer_t m_timerid;
103
//struct sigevent m_sev;
104
//struct itimerspec m_its;
105
106
//#endif
107
108
109
110
timer_handler();
111
~timer_handler()
override
;
112
113
114
//void on_initialize_particle() override;
115
116
117
virtual ::timer * add_timer(
::timer_dispatch
* ptimerdispatch, const ::e_timer & etimer,
const
class ::time &
time
, const ::timer_callback &callback);
118
virtual
void
erase_timer(
::timer_dispatch
* ptimerdispatch, const ::e_timer & etimer);
119
//virtual void add_timer_dispatch(::timer_dispatch * ptimerdispatch);
120
virtual
void
erase_timer_dispatch(
::timer_dispatch
* ptimerdispatch);
121
//virtual void erase_key_particle(::particle * pparticleKey);
122
123
bool
are_there_timers_to_handle()
const
{
return
m_timermap.count() > 0;}
124
125
virtual
void
on_start_timers_handling_hint();
126
virtual
void
on_stop_timers_handling_hint();
127
//void impl_init();
128
//void impl_term();
129
130
131
//virtual void initialize_timer(::particle* pparticle, ::acme::timer_array* ptimera, uptr uiTimer = 0, const ::timer_callback & callback = {}, ::particle* pparticleSynchronization = nullptr);
132
133
virtual
void
handle_timers();
134
135
virtual
void
_handle_timers(::timer_map * ptimermap);
136
137
138
139
140
//virtual void start_timer_handler(const class time & timeWait, bool bPeriodic);
141
142
143
//virtual void on_timer();
144
145
//virtual void destroy() override;
146
147
//virtual void stop_timer_handler();
148
152
//void term_task() override;
153
154
//inline bool is_timer_ok() const { return is_ok(); }
155
156
157
//bool is_task_set() const override;
158
159
160
};
161
162
163
//class CLASS_DECL_ACME timer_notify_sink :
164
class
CLASS_DECL_ACME timer_dispatch :
165
virtual
public
::timer_callback::base,
166
virtual
public
::particle
167
{
168
public
:
169
170
171
::pointer < ::timer_map > m_ptimermap;
172
::pointer_array<::timer_handler>
m_timerhandlera;
173
174
175
timer_dispatch();
176
~timer_dispatch()
override
;
177
178
179
virtual ::timer_map * get_timer_map();
180
181
virtual ::timer_handler * get_timer_handler(
const
class ::time &
time
);
182
//virtual void add_timer_dispatch(const ::e_timer & etimer, const class ::time & time, const ::timer_callback &callback);
183
//virtual void erase_timer(const ::e_timer & etimer);
184
//virtual void erase_key_particle(::particle * pparticleKey);
185
186
bool
are_there_timers_to_handle()
const
{
return
m_ptimermap && m_ptimermap->count() >0;}
187
188
virtual ::timer * set_timer(const ::e_timer & etimer,
const
class ::time &
time
, const ::timer_callback &callback = {},
189
::timer_handler
*ptimerhandler =
nullptr
);
190
virtual
void
kill_timer(const ::e_timer & etimer);
191
192
virtual ::comparable_array_base < ::e_timer > all_timers_ids();
193
194
virtual
void
erase_all_timers();
195
196
virtual
void
erase_timers(const ::comparable_array_base < ::e_timer > & etimera);
197
198
199
200
};
201
ø
Definition
pointer_container.h:83
particle
Definition
particle.h:95
pointer_array
Definition
pointer_array.h:1882
time
Definition
aaa_time.h:13
timer_dispatch
Definition
timer.h:167
timer_handler
Definition
timer.h:67
timer
Definition
aaa_timer.h:9
platform
timer.h
Generated by
1.17.0