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
10
namespace
vanetza
11
{
12
namespace
geonet
13
{
14
15
struct
BasicHeader
;
16
struct
CommonHeader
;
17
18
class
Pdu
;
19
20
class
ConstAccessiblePdu
21
{
22
public
:
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
33
class
Pdu
:
public
ConstAccessiblePdu
34
{
35
public
:
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
46
void
serialize(
const
ConstAccessiblePdu
&,
OutputArchive
&);
47
inline
void
serialize(
const
Pdu
& pdu,
OutputArchive
& ar)
48
{
49
serialize(
static_cast<
const
ConstAccessiblePdu
&
>
(pdu), ar);
50
}
51
52
std::size_t get_length(
const
ConstAccessiblePdu&);
53
54
}
// namespace geonet
55
}
// namespace vanetza
56
57
#endif
/* PDU_HPP_PQEC9PDO */
58
vanetza::OutputArchive
Definition
archives.hpp:62
vanetza::geonet::ConstAccessiblePdu
Definition
pdu.hpp:21
vanetza::geonet::Pdu
Definition
pdu.hpp:34
vanetza::geonet::BasicHeader
BasicHeader specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6.
Definition
basic_header.hpp:27
vanetza::geonet::CommonHeader
Definition
common_header.hpp:28
vanetza
geonet
pdu.hpp
Generated on
for Vanetza by
1.14.0