intermediate transport class for both TCP and UDP
This commit is contained in:
parent
8f7463b67f
commit
cf9ae4c89b
|
@ -80,4 +80,25 @@ void Pdu::iStream(PDU::Stream stream)
|
|||
// protocol dependent data segment // data
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief message_transport::iStream
|
||||
* @param stream
|
||||
*/
|
||||
void message_transport::iStream(PDU::Stream stream)
|
||||
{
|
||||
*stream >> root;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief message_transport::oStream
|
||||
* @param stream
|
||||
*/
|
||||
void message_transport::oStream(PDU::Stream stream) const
|
||||
{
|
||||
for ( const auto& pdu : *root.pdu )
|
||||
*stream << pdu;
|
||||
}
|
||||
|
||||
} // ACN::RLP
|
||||
|
|
|
@ -57,4 +57,17 @@ public:
|
|||
void iStream(PDU::Stream) override;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief The message_transport struct
|
||||
*/
|
||||
struct message_transport
|
||||
: PDU::pdu_stream_object
|
||||
{
|
||||
PDU::Block<RLP::Pdu> root; //!< root PDU block
|
||||
|
||||
void iStream(PDU::Stream) override;
|
||||
void oStream(PDU::Stream) const override;
|
||||
};
|
||||
|
||||
} // ACN::RLP
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace ACN::RLP::TCP {
|
|||
* @param filled
|
||||
*/
|
||||
transport::transport(bool filled)
|
||||
: PDU::pdu_stream_object()
|
||||
: RLP::message_transport()
|
||||
{
|
||||
if (!filled)
|
||||
return;
|
||||
|
@ -61,7 +61,7 @@ void transport::iStream(PDU::Stream stream)
|
|||
return stream->setstate(std::ios_base::failbit);
|
||||
|
||||
*stream >> length;
|
||||
*stream >> root;
|
||||
RLP::message_transport::iStream(stream);
|
||||
}
|
||||
|
||||
|
||||
|
@ -73,8 +73,7 @@ void transport::oStream(PDU::Stream stream) const
|
|||
{
|
||||
stream->write(acn_id, sizeof(acn_id));
|
||||
*stream << static_cast<uint32_t>(root.streamSize());
|
||||
for ( const auto& pdu : *root.pdu )
|
||||
*stream << pdu;
|
||||
RLP::message_transport::oStream(stream);
|
||||
}
|
||||
|
||||
} // ACN::RLP::TCP
|
||||
|
|
|
@ -35,15 +35,13 @@ namespace ACN::RLP::TCP {
|
|||
* @brief 3. Frame Preamble Format
|
||||
*/
|
||||
struct transport
|
||||
: public PDU::pdu_stream_object
|
||||
: RLP::message_transport
|
||||
{
|
||||
transport(bool filled = false);
|
||||
|
||||
uint8_t acn_id[12]; //!< 3.1 Packet Identifier
|
||||
uint32_t length; //!< 3.2 PDU Block Size
|
||||
|
||||
PDU::Block<RLP::Pdu> root; //!< root PDU block
|
||||
|
||||
size_t streamSize() const override { return sizeof(acn_id) + 4 +
|
||||
root.streamSize(); }
|
||||
void iStream(PDU::Stream) override;
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace ACN::RLP::UDP {
|
|||
* @param filled
|
||||
*/
|
||||
transport::transport(bool filled)
|
||||
: PDU::pdu_stream_object()
|
||||
: RLP::message_transport()
|
||||
{
|
||||
if (!filled)
|
||||
return;
|
||||
|
@ -83,7 +83,7 @@ void transport::iStream(PDU::Stream stream)
|
|||
if (length > PREAMBLE_MINIMUM_SIZE)
|
||||
stream->ignore((length - PREAMBLE_MINIMUM_SIZE));
|
||||
|
||||
*stream >> root;
|
||||
RLP::message_transport::iStream(stream);
|
||||
}
|
||||
|
||||
|
||||
|
@ -96,8 +96,7 @@ void transport::oStream(PDU::Stream stream) const
|
|||
*stream << length;
|
||||
*stream << postamble_size;
|
||||
stream->write(acn_id, sizeof(acn_id));
|
||||
for ( const auto& pdu : *root.pdu )
|
||||
*stream << pdu;
|
||||
RLP::message_transport::oStream(stream);
|
||||
}
|
||||
|
||||
} // ACN::RLP::UDP
|
||||
|
|
|
@ -50,15 +50,14 @@ static const uint8_t PREAMBLE_MINIMUM_SIZE = 16;
|
|||
* @brief 2. Preamble Format
|
||||
*/
|
||||
struct transport
|
||||
: public PDU::pdu_stream_object {
|
||||
: RLP::message_transport
|
||||
{
|
||||
transport(bool filled = false);
|
||||
|
||||
uint16_t length = 0; //!< length of preamble + PDU block
|
||||
uint16_t postamble_size = 0; //!< length of postamble
|
||||
uint8_t acn_id[12]; //!< packet identifier
|
||||
|
||||
PDU::Block<RLP::Pdu> root; //!< root PDU block
|
||||
|
||||
size_t streamSize() const override { return PREAMBLE_MINIMUM_SIZE
|
||||
+ root.streamSize(); }
|
||||
void iStream(PDU::Stream) override;
|
||||
|
|
Loading…
Reference in New Issue