28 _time = TimePoint::min();
42 if (group && group <= 8)
43 eventId |= (1 << (group + 15));
45 if (phase && phase <= 8)
46 eventId |= (1 << (phase + 23));
81 EventStore::iterator itr =
_eventMap.begin();
83 if (itr->first >
_time)
85 else if (
_phase && (itr->second & 0xFF000000) && !((itr->second >> 24) &
_phase))
89 uint32 eventId = (itr->second & 0x0000FFFF);
106 for (EventStore::iterator itr = delayed.begin(); itr != delayed.end();)
108 EventStore::node_type node = delayed.extract(itr++);
116 if (!group || group > 8 ||
Empty())
122 if (itr->second & (1 << (group + 15)))
124 EventStore::node_type node =
_eventMap.extract(itr++);
126 delayed.insert(delayed.end(), std::move(node));
142 if (eventId == (itr->second & 0x0000FFFF))
150 if (eventId == (itr->first & 0x0000FFFF))
159 if (!group || group > 8 ||
Empty())
164 if (itr->second & (1 << (group + 15)))
172 if (itr->first & (1 << (group + 15)))
181 for (std::pair<TimePoint const, uint32>
const& itr :
_eventMap)
182 if (eventId == (itr.second & 0x0000FFFF))
183 return std::chrono::duration_cast<Milliseconds>(itr.first -
_time);
185 return Milliseconds::max();
190 EventSeriesStore::iterator itr =
_timerSeries.find(eventData);
196 if (itr->second.size() > 1)
197 itr->second.erase(itr->second.begin());
204 if (!timeSeries.size())
207 if (group && group <= 8)
208 eventId |= (1 << (group + 15));
210 if (phase && phase <= 8)
211 eventId |= (1 << (phase + 23));
213 std::vector<Milliseconds>& series =
_timerSeries[eventId];
214 series.insert(series.end(), timeSeries.begin(), timeSeries.end());
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Milliseconds randtime(Milliseconds min, Milliseconds max)
void ScheduleEventSeries(uint32 eventId, uint8 group, uint8 phase, std::initializer_list< Milliseconds > timeSeries)
void Repeat(Milliseconds time)
EventMap & operator=(EventMap const &other)
void DelayEvents(Milliseconds delay)
void CancelEventGroup(uint32 group)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
EventSeriesStore _timerSeries
std::multimap< TimePoint, uint32 > EventStore
void CancelEvent(uint32 eventId)
void SetPhase(uint8 phase)
Milliseconds GetTimeUntilEvent(uint32 eventId) const
void ScheduleNextFromSeries(uint32 eventData)
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)