1#include <vanetza/security/v2/payload.hpp>
2#include <vanetza/security/v2/length_coding.hpp>
11PayloadType get_type(
const Payload& payload)
16size_t get_size(
const Payload& payload)
18 size_t length =
sizeof(PayloadType);
19 const size_t data = size(payload.data, OsiLayer::Network, max_osi_layer());
21 length += length_coding_size(data);
25size_t get_size(
const ByteBuffer& buf)
27 size_t size = buf.size();
28 size += length_coding_size(size);
32void serialize(OutputArchive& ar,
const Payload& payload)
34 serialize(ar, payload.type);
35 serialize_length(ar, size(payload.data, OsiLayer::Network, max_osi_layer()));
36 serialize(ar, payload.data);
39size_t deserialize(InputArchive& ar,
Payload& payload)
41 size_t size =
sizeof(PayloadType);
43 deserialize(ar, type);
46 static const std::size_t data_length_limit = 4096;
47 const auto data_length = deserialize_length(ar);
48 if (data_length <= data_length_limit) {
49 size += length_coding_size(data_length);
51 ByteBuffer buf(data_length);
52 ar.load_binary(buf.data(), buf.size());
53 payload.data = CohesivePacket(std::move(buf), OsiLayer::Network);
55 ar.fail(InputArchive::ErrorCode::ExcessiveLength);
Payload specified in TS 103 097 v1.2.1, section 5.2.