2#include <vanetza/common/serialization.hpp>
3#include <vanetza/common/serialization_buffer.hpp>
10using vanetza::serialize;
11using vanetza::deserialize;
13constexpr std::size_t HeaderA::length_bytes;
14constexpr std::size_t HeaderB::length_bytes;
16void serialize(OutputArchive& ar,
const HeaderA& hdr)
18 serialize(ar, hdr.destination_port);
19 serialize(ar, hdr.source_port);
22void deserialize(InputArchive& ar, HeaderA& hdr)
24 deserialize(ar, hdr.destination_port);
25 deserialize(ar, hdr.source_port);
28void serialize(OutputArchive& ar,
const HeaderB& hdr)
30 serialize(ar, hdr.destination_port);
31 serialize(ar, hdr.destination_port_info);
34void deserialize(InputArchive& ar, HeaderB& hdr)
36 deserialize(ar, hdr.destination_port);
37 deserialize(ar, hdr.destination_port_info);
40HeaderA parse_btp_a(CohesivePacket& packet)
43 deserialize_from_range(hdr, packet[OsiLayer::Transport]);
44 packet.set_boundary(OsiLayer::Transport, btp::HeaderA::length_bytes);
48HeaderA parse_btp_a(ChunkPacket& packet)
52 packet[OsiLayer::Transport].convert(tmp);
53 deserialize_from_buffer(hdr, tmp);
57HeaderA parse_btp_a(PacketVariant& packet)
59 struct parse_btp_visitor :
public boost::static_visitor<HeaderA>
61 HeaderA operator()(CohesivePacket& packet) {
62 return parse_btp_a(packet);
65 HeaderA operator()(ChunkPacket& packet) {
66 return parse_btp_a(packet);
70 parse_btp_visitor visitor;
71 return boost::apply_visitor(visitor, packet);
74HeaderB parse_btp_b(CohesivePacket& packet)
77 deserialize_from_range(hdr, packet[OsiLayer::Transport]);
78 packet.set_boundary(OsiLayer::Transport, btp::HeaderB::length_bytes);
82HeaderB parse_btp_b(ChunkPacket& packet)
86 packet[OsiLayer::Transport].convert(tmp);
87 deserialize_from_buffer(hdr, tmp);
91HeaderB parse_btp_b(PacketVariant& packet)
93 struct parse_btp_visitor :
public boost::static_visitor<HeaderB>
95 HeaderB operator()(CohesivePacket& packet) {
96 return parse_btp_b(packet);
99 HeaderB operator()(ChunkPacket& packet) {
100 return parse_btp_b(packet);
104 parse_btp_visitor visitor;
105 return boost::apply_visitor(visitor, packet);