Vanetza
 
Loading...
Searching...
No Matches
pdu.cpp
1#include <vanetza/geonet/basic_header.hpp>
2#include <vanetza/geonet/common_header.hpp>
3#include <vanetza/geonet/header_variant.hpp>
4#include <vanetza/geonet/pdu.hpp>
5#include <vanetza/security/secured_message.hpp>
6
7namespace vanetza
8{
9namespace geonet
10{
11
12void serialize(const ConstAccessiblePdu& pdu, OutputArchive& ar)
13{
14 serialize(pdu.basic(), ar);
15 if (pdu.secured()) {
16 security::serialize(ar, *pdu.secured());
17 } else {
18 geonet::serialize(pdu.common(), ar);
19 boost::serialize(pdu.extended_variant(), ar);
20 }
21}
22
23std::size_t get_length(const ConstAccessiblePdu& pdu)
24{
25 std::size_t length = BasicHeader::length_bytes;
26 if (pdu.secured()) {
27 length += security::get_size(*pdu.secured());
28 } else {
29 length += CommonHeader::length_bytes;
30 length += get_length(pdu.extended_variant());
31 }
32 return length;
33}
34
35} // namespace geonet
36} // namespace vanetza