#ifndef VARIANT_PDU_HPP_PHYRXMBW #define VARIANT_PDU_HPP_PHYRXMBW #include #include #include #include #include #include namespace vanetza { namespace geonet { class VariantPdu : public Pdu { public: using SecuredMessage = security::SecuredMessage; VariantPdu() = default; VariantPdu(const VariantPdu&); VariantPdu& operator=(const VariantPdu&); VariantPdu(const Pdu&); VariantPdu& operator=(const Pdu&); BasicHeader& basic() override; const BasicHeader& basic() const override; CommonHeader& common() override; const CommonHeader& common() const override; HeaderVariant& extended_variant(); HeaderConstRefVariant extended_variant() const override; SecuredMessage* secured() override; const SecuredMessage* secured() const override; void secured(const SecuredMessage&) override; void secured(SecuredMessage&&); std::unique_ptr clone() const override; private: BasicHeader m_basic; CommonHeader m_common; HeaderVariant m_extended; boost::optional m_secured; }; } // namespace geonet } // namespace vanetza #endif /* VARIANT_PDU_HPP_PHYRXMBW */