1#include <vanetza/geonet/variant_pdu.hpp>
2#include <boost/variant/static_visitor.hpp>
9VariantPdu::VariantPdu(
const Pdu& pdu) :
10 m_basic(pdu.basic()), m_common(pdu.common()), m_extended(pdu.extended_variant()),
11 m_secured(pdu.secured() ? boost::make_optional(*pdu.secured()) : boost::none)
15VariantPdu::VariantPdu(
const VariantPdu& pdu) :
16 VariantPdu(static_cast<const Pdu&>(pdu))
20VariantPdu& VariantPdu::operator=(
const VariantPdu& pdu)
22 return operator=(
static_cast<const Pdu&
>(pdu));
25VariantPdu& VariantPdu::operator=(
const Pdu& pdu)
27 m_basic = pdu.basic();
28 m_common = pdu.common();
29 m_extended = pdu.extended_variant();
31 m_secured = *pdu.secured();
33 m_secured = boost::none;
39BasicHeader& VariantPdu::basic()
44const BasicHeader& VariantPdu::basic()
const
49CommonHeader& VariantPdu::common()
54const CommonHeader& VariantPdu::common()
const
59HeaderVariant& VariantPdu::extended_variant()
64HeaderConstRefVariant VariantPdu::extended_variant()
const
69VariantPdu::SecuredMessage* VariantPdu::secured()
71 return m_secured.get_ptr();
74const VariantPdu::SecuredMessage* VariantPdu::secured()
const
76 return m_secured.get_ptr();
79void VariantPdu::secured(
const SecuredMessage& smsg)
84std::unique_ptr<Pdu> VariantPdu::clone()
const
86 return std::unique_ptr<Pdu> {
new VariantPdu(*
this) };