11Repeater::Repetition::Repetition(
const DataRequestVariant& request,
const DownPacket& payload) :
29 if (has_further_repetition(repetition)) {
30 const auto next_repetition = m_runtime.now() + units::clock_cast(repetition.interval);
31 m_repetitions.emplace_front(request, payload);
32 auto added = m_repetitions.begin();
33 auto then = std::placeholders::_1;
34 m_runtime.schedule(next_repetition, std::bind<void>(&
Repeater::trigger,
this, added, then),
this);
41 DataRequest& request = access_request(repetition.m_request);
42 assert(request.repetition);
45 decrement_by_one(*request.repetition);
46 auto delayed = m_runtime.now() - invocation;
47 request.repetition->maximum -= units::clock_cast(delayed);
50 if (!has_further_repetition(request)) {
51 request.repetition.reset();
54 m_repeat_fn(repetition.m_request, std::move(repetition.m_payload));
55 m_repetitions.erase(rep);