#include #include namespace vanetza { namespace geonet { SecuredPdu::SecuredPdu(const Pdu& pdu) : common(pdu.common()), extended(pdu.extended_variant()) { } void serialize(const SecuredPdu& pdu, OutputArchive& ar) { serialize(pdu.common, ar); serialize(pdu.extended, ar); } SecuredPdu* secured_pdu_cast(ByteBufferConvertible& convertible) { using convertible_pdu_t = convertible::byte_buffer_impl; auto convertible_pdu = dynamic_cast(convertible.ptr()); return convertible_pdu ? &convertible_pdu->pdu : nullptr; } } // namespace geonet namespace convertible { byte_buffer_impl::byte_buffer_impl(const geonet::SecuredPdu& _pdu) : pdu(_pdu) { } void byte_buffer_impl::convert(ByteBuffer& buffer) const { geonet::serialize_into_buffer(pdu, buffer); } std::size_t byte_buffer_impl::size() const { using namespace geonet; return CommonHeader::length_bytes + get_length(pdu.extended); } std::unique_ptr byte_buffer_impl::duplicate() const { return std::unique_ptr { new byte_buffer_impl(*this) }; } } // namespace convertible } // namespace vanetza