1
0
Fork 0

pdu block members are owned by the block and do not require separate memory management.

This commit is contained in:
Kevin Matz 2023-05-18 14:43:35 -04:00
parent 0c442b74a2
commit 7315070462
8 changed files with 28 additions and 28 deletions

View File

@ -85,18 +85,18 @@ struct Block
/**
* @brief member Messages of this block
*/
std::shared_ptr<std::vector<Message<T>>> pdu = std::make_shared<std::vector<Message<T>>>();
std::vector<Message<T>> pdu;
/**
* @brief setParent
* @param parent
*/
void setParent(Message<Pdu> parent) {
for (auto & p : *pdu)
for (auto &p : pdu)
p->setParent(parent);
}
size_t streamSize() const override {
size_t s = 0;
for (const auto & child : *pdu)
for (const auto &child : pdu)
s += child->streamSize();
return s;
}
@ -108,13 +108,13 @@ struct Block
break;
if (p->stream()->fail()) // pdu buffer failed
continue;
if (!pdu->empty()) // set inheritee
p->setInherit(pdu->back());
pdu->push_back(p); // add to block
if (!pdu.empty()) // set inheritee
p->setInherit(pdu.back());
pdu.push_back(p); // add to block
}
}
void oStream(Stream s) const override {
for (const auto & child : *pdu)
for (const auto &child : pdu)
child->oStream(s);
};
};

View File

@ -57,7 +57,7 @@ void Component::UdpPayloadReceiver(PDU::Stream stream) const
*stream >> transport;
/// The RLP PDU Block will contain only suscessfully read PDU
for(auto const &root : *transport.root.pdu)
for(auto const &root : transport.root.pdu)
RlpReceiver(root);
}
@ -93,7 +93,7 @@ void Component::rlpSendUdp (const uint32_t vector,
/// Adds the PDU to the root block of the EPI 17 tranport format.
UDP::transport transport(true);
transport.root.pdu->push_back(rlp);
transport.root.pdu.push_back(rlp);
/// Fills an output stream with the transported PDU
size_t length = transport.streamSize();
@ -117,7 +117,7 @@ void Component::TcpPacketReceiver(PDU::Stream stream) const
*stream >> transport;
/// The RLP PDU Block will only contain suscessfully read PDU
for(auto const &root : *transport.root.pdu)
for(const auto &root : transport.root.pdu)
RlpReceiver(root);
}
@ -153,7 +153,7 @@ void Component::rlpSendTcp (const uint32_t vector,
/// Adds the PDU to the root block of the EPI 33 tranport format.
TCP::transport transport(true);
transport.root.pdu->push_back(rlp);
transport.root.pdu.push_back(rlp);
/// Fills an output stream with the transported PDU
size_t length = transport.streamSize();

View File

@ -54,7 +54,7 @@ void Leader::SdtReceiver(PDU::Message<RLP::Pdu> root)
root->createDataBlock<SDT::Pdu>();
auto block = std::static_pointer_cast<PDU::Block<SDT::Pdu>>(root->data());
for(auto const &sdt : *block->pdu) {
for(const auto &sdt : block->pdu) {
switch(sdt->vector()) {
/// \todo handle SDT
default:

View File

@ -50,7 +50,7 @@ void Broker::rlpBrokerReceiver(ACN::PDU::Message<ACN::RLP::Pdu> root)
{
root->createDataBlock<BrokerProtocol::Pdu>();
auto block = std::static_pointer_cast<ACN::PDU::Block<BrokerProtocol::Pdu>>(root->data());
for(auto const &frame : *block->pdu)
for(const auto &frame : block->pdu)
{
switch(frame->vector()) {
case VECTOR_BROKER_CONNECT:

View File

@ -54,7 +54,7 @@ void Implementation::rlpLlrpReceiver(ACN::PDU::Message<ACN::RLP::Pdu> root)
root->createDataBlock<LLRP::Pdu>();
auto block = std::static_pointer_cast<ACN::PDU::Block<LLRP::Pdu>>(root->data());
for(auto const &frame : *block->pdu)
for(const auto &frame : block->pdu)
LLRP::Target::receiveLLRP(frame);
}
@ -69,7 +69,7 @@ void Implementation::rlpEptReceiver(ACN::PDU::Message<ACN::RLP::Pdu> root)
root->createDataBlock<EPT::Pdu>();
auto block = std::static_pointer_cast<ACN::PDU::Block<EPT::Pdu>>(root->data());
for(auto const &frame : *block->pdu)
for(const auto &frame : block->pdu)
EPT::Client::receiveEPT(frame);
}

View File

@ -81,24 +81,24 @@ void Pdu::iStream(ACN::PDU::Stream stream)
{
auto block = ACN::PDU::Block<ProbeRequest::Pdu>();
*stream_ >> block;
if (!block.pdu->empty())
payload->child = block.pdu->front();
if (!block.pdu.empty())
payload->child = block.pdu.front();
}
break;
case VECTOR_LLRP_PROBE_REPLY:
{
auto block = ACN::PDU::Block<ProbeReply::Pdu>();
*stream_ >> block;
if (!block.pdu->empty())
payload->child = block.pdu->front();
if (!block.pdu.empty())
payload->child = block.pdu.front();
}
break;
case VECTOR_LLRP_RDM_CMD:
{
auto block = ACN::PDU::Block<RPT::COMMAND::Pdu>();
*stream_ >> block;
if (!block.pdu->empty())
payload->child = block.pdu->front();
if (!block.pdu.empty())
payload->child = block.pdu.front();
}
break;
default:

View File

@ -52,7 +52,7 @@ void Manager::rlpLlrpReceiver(ACN::PDU::Message<ACN::RLP::Pdu> root)
root->createDataBlock<LLRP::Pdu>();
auto block = std::static_pointer_cast<ACN::PDU::Block<LLRP::Pdu>>(root->data());
for(auto const &frame : *block->pdu)
for(auto const &frame : block->pdu)
{
auto data = std::static_pointer_cast<llrp_data>(frame->data());
switch (frame->vector())

View File

@ -152,7 +152,7 @@ void Receiver::dataReceiver(ACN::PDU::Message<ACN::RLP::Pdu> root)
#else
auto block = std::static_pointer_cast<ACN::PDU::Block<DATA::Pdu>>(root->data());
#endif
for(auto const &frame : *block->pdu)
for(const auto &frame : block->pdu)
{
/// > \cite sACN 6.2.1 E1.31 Data Packet: Vector
/// >
@ -187,7 +187,7 @@ void Receiver::extendedReceiver(ACN::PDU::Message<ACN::RLP::Pdu> root)
#else
auto block = std::static_pointer_cast<ACN::PDU::Block<EXTENDED::Pdu>>(root->data());
#endif
for(auto const &frame : *block->pdu)
for(const auto &frame : block->pdu)
{
switch(frame->vector()) {
/// \cite sACN 6.3 E1.31 Synchronization Packet Framing Layer
@ -285,13 +285,13 @@ void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame)
#else
auto block = std::static_pointer_cast<ACN::PDU::Block<ACN::DMP::Pdu>>(frame->data());
#endif
if (!block->pdu->empty())
if (!block->pdu.empty())
{
#ifdef RTTI_ENABLED
auto dmp = std::dynamic_pointer_cast<ACN::DMP::Pdu>(block->pdu->front());
auto dmp = std::dynamic_pointer_cast<ACN::DMP::Pdu>(block->pdu.front());
auto list = std::dynamic_pointer_cast<ACN::DMP::address_pair_list>(dmp->data());
#else
auto dmp = std::static_pointer_cast<ACN::DMP::Pdu>(block->pdu->front());
auto dmp = std::static_pointer_cast<ACN::DMP::Pdu>(block->pdu.front());
auto list = std::static_pointer_cast<ACN::DMP::address_pair_list>(dmp->data());
#endif
if (!list->properties.empty())
@ -357,7 +357,7 @@ void Receiver::discoveryFrameHandler(ACN::PDU::Message<EXTENDED::Pdu> frame) {
#else
auto block = std::static_pointer_cast<ACN::PDU::Block<EXTENDED::DISCOVERY::Pdu>>(frame->data());
#endif
for(auto const &pdu : *block->pdu)
for(const auto &pdu : block->pdu)
{
/// > \cite sACN 8 Universe Discovery Layer
/// >