21 TimerID timer = TimerID::New ();
22 fRep_->AddOneShot (timer, intervalTimer, when);
26 const optional<Time::Duration>& hysteresis) ->
TimerID
29 Require (repeatInterval >= 0s);
30 Require (hysteresis == nullopt or hysteresis >= 0s);
32 TimerID timer = TimerID::New ();
33 fRep_->AddRepeating (timer, intervalTimer, repeatInterval, hysteresis);
36 inline bool IntervalTimer::Manager::Remove (
TimerID timer)
noexcept
39 return fRep_->Remove (timer);
41 inline void IntervalTimer::Manager::RemoveRepeating (
TimerID timer)
noexcept
45 inline auto IntervalTimer::Manager::GetAllRegisteredTasks () const -> RegisteredTaskCollection
48 return fRep_->GetAllRegisteredTasks ();
50 inline IntervalTimer::Manager IntervalTimer::Manager::sThe{
nullptr};
57 inline IntervalTimer::Adder::Adder (
const TimerCallback& f,
const Time::Duration& repeatInterval, RunImmediatelyFlag runImmediately,
58 const optional<Time::Duration>& hysteresis)
59 : Adder{Manager::sThe, f, repeatInterval, runImmediately, hysteresis}
63 const optional<Time::Duration>& hysteresis)
64 : Adder{manager, f, repeatInterval, RunImmediatelyFlag::eDontRunImmediately, hysteresis}
68 : Adder{Manager::sThe, f, repeatInterval, RunImmediatelyFlag::eDontRunImmediately, hysteresis}
72 : fManager_{src.fManager_}
73 , fFunction_{move (src.fFunction_)}
74 , fTimer_{src.fTimer_}
76 src.fManager_ =
nullptr;
78 inline IntervalTimer::Adder::~Adder ()
80 if (fManager_ !=
nullptr) {
81 fManager_->Remove (fTimer_);
87 if (fManager_ !=
nullptr) {
88 fManager_->Remove (fTimer_);
90 fManager_ = rhs.fManager_;
91 fFunction_ = move (rhs.fFunction_);
92 fTimer_ = rhs.fTimer_;
93 rhs.fManager_ =
nullptr;
97 inline auto IntervalTimer::Adder::GetCallback () const ->
TimerCallback
#define RequireNotNull(p)
Adder adds the given function object to the (for now default; later optionally explicit) IntervalTime...
nonvirtual Adder & operator=(Adder &&rhs) noexcept
Removes this Adder's own timer, and takes over rhs's (not adding it again: rhs, moved from,...
Manager(const Manager &)=delete
function< void()> TimerCallback
Duration is a chrono::duration<double> (=.