23class ExtendedPdu :
public Pdu
26 using SecuredMessage = security::SecuredMessage;
27 using ExtendedHeader = HEADER;
29 ExtendedPdu() =
default;
30 ExtendedPdu(
const ExtendedPdu& pdu) :
31 m_basic(pdu.m_basic), m_common(pdu.m_common), m_extended(pdu.m_extended),
32 m_secured(pdu.m_secured) {}
33 ExtendedPdu& operator=(
const ExtendedPdu&) =
default;
34 ExtendedPdu(
const MIB& mib) : m_basic(mib), m_common(mib) {}
35 ExtendedPdu(
const DataRequest& request,
const MIB& mib) :
36 m_basic(request, mib), m_common(request, mib) {}
38 m_basic(basic), m_common(common), m_extended(extended) {}
40 const SecuredMessage& secured) :
41 m_basic(basic), m_common(common), m_extended(extended), m_secured(secured) {}
43 m_basic(pdu.basic()), m_common(pdu.common()), m_extended(pdu.extended()),
44 m_secured(pdu.secured() ? boost::make_optional(*pdu.secured()) : boost::none) {}
47 const BasicHeader& basic()
const override {
return m_basic; }
49 const CommonHeader& common()
const override {
return m_common; }
50 HeaderConstRefVariant extended_variant()
const override {
return m_extended; }
51 HEADER& extended() {
return m_extended; }
52 const HEADER& extended()
const {
return m_extended; }
53 SecuredMessage* secured()
override {
return m_secured.get_ptr(); }
54 const SecuredMessage* secured()
const override {
return m_secured.get_ptr(); }
55 void secured(
const SecuredMessage& smsg)
override
60 std::unique_ptr<Pdu> clone()
const override
62 return std::unique_ptr<ExtendedPdu> {
new ExtendedPdu(*
this) };
69 boost::optional<SecuredMessage> m_secured;
76 using SecuredMessage = security::SecuredMessage;
77 using ExtendedHeader = HEADER;
80 mr_basic(basic), mr_common(common), mr_extended(extended), mp_secured(
nullptr) {}
82 const SecuredMessage* secured) :
83 mr_basic(basic), mr_common(common), mr_extended(extended), mp_secured(secured) {}
85 const BasicHeader& basic()
const override {
return mr_basic; }
86 const CommonHeader& common()
const override {
return mr_common; }
87 HeaderConstRefVariant extended_variant()
const override {
return mr_extended; }
88 const HEADER& extended()
const {
return mr_extended; }
89 const SecuredMessage* secured()
const override {
return mp_secured; }
91 std::unique_ptr<Pdu> clone()
const override
93 return std::unique_ptr<ExtendedPdu<HEADER>> {
103 const HEADER& mr_extended;
104 const SecuredMessage* mp_secured;