21 return _tag == 0xCAFEDADA;
26 if (handler_ ==
NULL) {
31 uint64_t when = _clock.now_ms () + interval_;
32 timer_t timer = {++_next_timer_id, interval_, handler_, arg_};
44 return entry_.second.timer_id ==
_timer_id;
55 == std::find_if (_timers.begin (), _timers.end (),
62 if (_cancelled_timers.count (timer_id_)) {
67 _cancelled_timers.insert (timer_id_);
74 const timersmap_t::iterator
end = _timers.end ();
75 const timersmap_t::iterator
it =
80 uint64_t when = _clock.now_ms () + interval_;
93 const timersmap_t::iterator
end = _timers.end ();
94 const timersmap_t::iterator
it =
98 uint64_t when = _clock.now_ms () + timer.
interval;
111 const uint64_t now = _clock.now_ms ();
114 const timersmap_t::iterator
begin = _timers.begin ();
115 const timersmap_t::iterator
end = _timers.end ();
116 timersmap_t::iterator
it =
begin;
118 if (0 == _cancelled_timers.erase (
it->second.timer_id)) {
120 res = std::max (
static_cast<long> (
it->first - now), 0l);
133 const uint64_t now = _clock.now_ms ();
135 const timersmap_t::iterator
begin = _timers.begin ();
136 const timersmap_t::iterator
end = _timers.end ();
137 timersmap_t::iterator
it = _timers.begin ();
139 if (0 == _cancelled_timers.erase (
it->second.timer_id)) {