Vanetza
Loading...
Searching...
No Matches
repeater.hpp
1
#ifndef REPEATER_HPP_AH49FXB1
2
#define REPEATER_HPP_AH49FXB1
3
4
#include <vanetza/common/clock.hpp>
5
#include <vanetza/geonet/data_request.hpp>
6
#include <vanetza/geonet/packet.hpp>
7
#include <functional>
8
#include <list>
9
#include <memory>
10
11
namespace
vanetza
12
{
13
// forward declaration
14
class
Runtime
;
15
16
namespace
geonet
17
{
18
19
/**
20
* Repeater eases handling of packet repetitions.
21
* Packet repetitions are repeated requests with same payload.
22
*/
23
class
Repeater
24
{
25
public
:
26
using
Callback = std::function<void(
const
DataRequestVariant&, std::unique_ptr<DownPacket>)>;
27
28
/**
29
* Create a Repeater instance
30
* \param rt runtime used for scheduling repetitions
31
* \param cb callback to be invoked when repetition is due
32
*/
33
Repeater
(
Runtime
& rt,
const
Callback& cb);
34
~Repeater
();
35
36
/**
37
* Add another repetition
38
* \param request any kind of GeoNet data request
39
* \param payload request's payload
40
*/
41
template
<
class
REQUEST>
42
void
add
(
const
REQUEST& request,
const
DownPacket& payload)
43
{
44
if
(request.repetition) {
45
add
(request, *request.repetition, payload);
46
}
47
}
48
49
private
:
50
struct
Repetition
51
{
52
Repetition(
const
DataRequestVariant&,
const
DownPacket&);
53
54
DataRequestVariant m_request;
55
std::unique_ptr<DownPacket> m_payload;
56
};
57
58
/**
59
* Add packet repetition to internal book keeping
60
*/
61
void
add
(
const
DataRequestVariant&,
const
DataRequest::Repetition
&,
const
DownPacket&);
62
63
/**
64
* Triggered when repetition is due according to runtime
65
*/
66
void
trigger
(std::list<Repetition>::iterator, Clock::time_point);
67
68
std::list<Repetition> m_repetitions;
69
Callback m_repeat_fn;
70
Runtime
& m_runtime;
71
};
72
73
}
// namespace geonet
74
}
// namespace vanetza
75
76
#endif
/* REPEATER_HPP_AH49FXB1 */
77
vanetza::Runtime
Definition
runtime.hpp:16
vanetza::geonet::Repeater::trigger
void trigger(std::list< Repetition >::iterator, Clock::time_point)
Definition
repeater.cpp:38
vanetza::geonet::Repeater::Repeater
Repeater(Runtime &rt, const Callback &cb)
Definition
repeater.cpp:16
vanetza::geonet::Repeater::add
void add(const REQUEST &request, const DownPacket &payload)
Definition
repeater.hpp:42
vanetza::geonet::DataRequest::Repetition
Definition
data_request.hpp:37
vanetza
geonet
repeater.hpp
Generated on
for Vanetza by
1.14.0