1#include <vanetza/net/packet.hpp>
6std::unique_ptr<DownPacket> duplicate(
const PacketVariant& packet)
8 struct duplication_visitor :
public boost::static_visitor<>
10 void operator()(
const CohesivePacket& packet)
12 m_duplicate.reset(
new ChunkPacket());
13 for (
auto layer : osi_layers) {
14 const auto source = packet[layer];
15 auto& dest = m_duplicate->layer(layer);
16 dest = ByteBuffer(source.begin(), source.end());
20 void operator()(
const ChunkPacket& packet)
22 m_duplicate = duplicate(packet);
25 std::unique_ptr<ChunkPacket> m_duplicate;
28 duplication_visitor visitor;
29 boost::apply_visitor(visitor, packet);
30 return std::move(visitor.m_duplicate);
33std::unique_ptr<DownPacket> duplicate(
const DownPacket& packet)
35 return std::unique_ptr<DownPacket> {
new DownPacket(packet) };