Vanetza
Loading...
Searching...
No Matches
pdu.hpp
1#ifndef PDU_HPP_PQEC9PDO
2#define PDU_HPP_PQEC9PDO
3
4#include <vanetza/geonet/header_variant.hpp>
5#include <vanetza/geonet/serialization.hpp>
6#include <vanetza/security/secured_message.hpp>
7#include <cstddef>
8#include <memory>
9
10namespace vanetza
11{
12namespace geonet
13{
14
15struct BasicHeader;
16struct CommonHeader;
17
18class Pdu;
19
21{
22public:
23 using SecuredMessage = security::SecuredMessage;
24
25 virtual const BasicHeader& basic() const = 0;
26 virtual const CommonHeader& common() const = 0;
27 virtual const SecuredMessage* secured() const = 0;
28 virtual HeaderConstRefVariant extended_variant() const = 0;
29 virtual std::unique_ptr<Pdu> clone() const = 0;
30 virtual ~ConstAccessiblePdu() = default;
31};
32
33class Pdu : public ConstAccessiblePdu
34{
35public:
36 using ConstAccessiblePdu::basic;
37 using ConstAccessiblePdu::common;
38 using ConstAccessiblePdu::secured;
39
40 virtual BasicHeader& basic() = 0;
41 virtual CommonHeader& common() = 0;
42 virtual SecuredMessage* secured() = 0;
43 virtual void secured(const SecuredMessage&) = 0;
44};
45
46void serialize(const ConstAccessiblePdu&, OutputArchive&);
47inline void serialize(const Pdu& pdu, OutputArchive& ar)
48{
49 serialize(static_cast<const ConstAccessiblePdu&>(pdu), ar);
50}
51
52std::size_t get_length(const ConstAccessiblePdu&);
53
54} // namespace geonet
55} // namespace vanetza
56
57#endif /* PDU_HPP_PQEC9PDO */
ChunckPacket is a packet consisting of several memory chunks.
std::size_t size(OsiLayer from, OsiLayer to) const
virtual void cancel(const void *scope)=0
virtual Clock::time_point now() const =0
std::size_t counter(const Identifier &packet) const
boost::optional< CbfPacket > fetch(const Identifier &id)
void remove_timer(typename timer_bimap::left_map::iterator)
bool remove(const Identifier &id)
CbfPacketBuffer(Runtime &rt, TimerCallback cb, std::unique_ptr< CbfCounter > cnt, std::size_t bytes)
void update(const Identifier &id, Clock::duration timeout)
void add(CbfPacket &&packet, Clock::duration timeout)
const CbfPacket * find(const Identifier &id) const
bool reduce_lifetime(const Timer &, CbfPacket &) const
Clock::duration reduce_lifetime(Clock::duration d)
const MacAddress & sender() const
SequenceNumber sequence_number() const
const Address & source() const
BasicHeader specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6.