1#include <vanetza/security/secured_message.hpp>
2#include <boost/variant/apply_visitor.hpp>
3#include <boost/variant/static_visitor.hpp>
10ItsAid get_its_aid(
const SecuredMessage& msg)
12 struct Visitor : boost::static_visitor<ItsAid>
14 ItsAid operator()(
const v2::SecuredMessage& msg)
const
16 return get_its_aid(msg);
19 ItsAid operator()(
const v3::SecuredMessage& msg)
const
25 return boost::apply_visitor(Visitor(), msg);
28std::size_t get_size(
const SecuredMessage& msg)
30 struct Visitor : boost::static_visitor<std::size_t>
32 std::size_t operator()(
const v2::SecuredMessage& msg)
const
37 std::size_t operator()(
const v3::SecuredMessage& msg)
const
43 return boost::apply_visitor(Visitor(), msg);
46void serialize(OutputArchive& ar,
const SecuredMessage& msg)
48 struct Visitor : boost::static_visitor<void>
50 OutputArchive& m_archive;
51 Visitor(OutputArchive& ar) : m_archive(ar) {}
53 void operator()(
const v2::SecuredMessage& msg)
55 serialize(m_archive, msg);
58 void operator()(
const v3::SecuredMessage& msg)
60 serialize(m_archive, msg);
65 boost::apply_visitor(visitor, msg);
68std::size_t deserialize(InputArchive& ar, SecuredMessage& msg)
70 struct Visitor : boost::static_visitor<std::size_t>
72 InputArchive& m_archive;
73 Visitor(InputArchive& ar) : m_archive(ar) {}
75 std::size_t operator()(v2::SecuredMessage& msg)
77 return deserialize(m_archive, msg);
80 std::size_t operator()(v3::SecuredMessage& msg)
82 return deserialize(m_archive, msg);
87 return boost::apply_visitor(visitor, msg);
90PacketVariant get_payload_copy(
const SecuredMessage& msg)
92 struct Visitor : boost::static_visitor<PacketVariant>
94 PacketVariant operator()(
const v2::SecuredMessage& msg)
const
96 return msg.payload.data;
99 PacketVariant operator()(
const v3::SecuredMessage& msg)
const
101 return msg.payload();
105 return boost::apply_visitor(Visitor {}, msg);