2#include "data_request.hpp"
3#include <vanetza/common/runtime.hpp>
11Repeater::Repetition::Repetition(
const DataRequestVariant& request,
const DownPacket& payload) :
12 m_request(request), m_payload(new DownPacket(payload))
16Repeater::Repeater(
Runtime& rt,
const Callback& cb) : m_repeat_fn(cb), m_runtime(rt)
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;
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);
ChunckPacket is a packet consisting of several memory chunks.
virtual void cancel(const void *scope)=0
virtual Clock::time_point now() const =0
virtual void schedule(Clock::time_point tp, const Callback &cb, const void *scope=nullptr)=0
void trigger(std::list< Repetition >::iterator, Clock::time_point)
void add(const REQUEST &request, const DownPacket &payload)