1#ifndef PACKET_VARIANT_HPP_LILZ0UWN
2#define PACKET_VARIANT_HPP_LILZ0UWN
4#include <vanetza/common/byte_view.hpp>
5#include <vanetza/common/serialization.hpp>
6#include <vanetza/net/chunk_packet.hpp>
7#include <vanetza/net/cohesive_packet.hpp>
8#include <boost/variant.hpp>
13using PacketVariant = boost::variant<ChunkPacket, CohesivePacket>;
16size(
const CohesivePacket& packet, OsiLayer from, OsiLayer to)
18 return packet.size(from, to);
22size(
const CohesivePacket& packet, OsiLayer layer)
24 return packet.size(layer);
28size(
const ChunkPacket& packet, OsiLayer from, OsiLayer to)
30 return packet.size(from, to);
34size(
const ChunkPacket& packet, OsiLayer layer)
36 return packet[layer].size();
45byte_view_range create_byte_view(
const ChunkPacket&, OsiLayer);
46byte_view_range create_byte_view(
const CohesivePacket&, OsiLayer);
55byte_view_range create_byte_view(
const ChunkPacket& packet, OsiLayer from, OsiLayer to);
56byte_view_range create_byte_view(
const CohesivePacket& packet, OsiLayer from, OsiLayer to);
63void serialize(OutputArchive&,
const ChunkPacket&);
64void serialize(OutputArchive&,
const CohesivePacket&);
72std::size_t size(
const vanetza::PacketVariant&, vanetza::OsiLayer from, vanetza::OsiLayer to);
73std::size_t size(
const vanetza::PacketVariant&, vanetza::OsiLayer);
74std::size_t size(
const vanetza::PacketVariant&);
76vanetza::byte_view_range create_byte_view(
const vanetza::PacketVariant&, vanetza::OsiLayer from, vanetza::OsiLayer to);