1#include "manual_runtime.hpp"
7ManualRuntime::ManualRuntime(Clock::time_point init) : m_now(init)
13 m_queue.emplace(queue_type::value_type { tp, cb, scope });
24 auto scope_match_range = m_queue.get<
by_scope>().equal_range(scope);
25 m_queue.get<
by_scope>().erase(scope_match_range.first, scope_match_range.second);
31 Clock::time_point next_tp = Clock::time_point::max();
32 if (!m_queue.empty()) {
33 next_tp = m_queue.get<
by_deadline>().begin()->deadline;
43void ManualRuntime::trigger(Clock::time_point tp)
51void ManualRuntime::trigger(Clock::duration d)
57void ManualRuntime::trigger()
60 while (!m_queue.empty()) {
61 auto top = m_queue.get<by_deadline>().begin();
62 const auto deadline = top->deadline;
63 if (deadline <= m_now) {
64 Callback cb = top->callback;
65 m_queue.get<by_deadline>().erase(top);
81 for (
auto& item : queue) {
82 const auto& deadline = item.deadline;
83 auto& callback = item.callback;
void trigger(Clock::time_point tp)
void cancel(const void *scope) override
Clock::time_point next() const
void reset(Clock::time_point tp)
Clock::time_point now() const override
void schedule(Clock::time_point, const Callback &, const void *=nullptr) override