1
0
Fork 0

cleanup stream output

This commit is contained in:
Kevin Matz 2021-08-20 12:04:39 -04:00
parent 92e14a2b5c
commit 5e9f957731
4 changed files with 40 additions and 73 deletions

View File

@ -57,9 +57,9 @@ void transport::iStream(PDU::Stream stream)
* encoded in [ASCII].
*/
stream->read(acn_id, sizeof(acn_id));
if (stream->gcount() != 12)
if (stream->gcount() != sizeof(acn_id))
return stream->setstate(std::ios_base::failbit);
if (memcmp(acn_id, ACN_PACKET_IDENTIFIER, 12))
if (memcmp(acn_id, ACN_PACKET_IDENTIFIER, sizeof(acn_id)))
return stream->setstate(std::ios_base::failbit);
*stream >> length;
@ -70,8 +70,12 @@ void transport::iStream(PDU::Stream stream)
/**
* @brief transport::oStream
*/
void transport::oStream(PDU::Stream) const
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;
}
} // TCP

View File

@ -73,7 +73,7 @@ void transport::iStream(PDU::Stream stream)
stream->read(acn_id, sizeof(acn_id));
if (stream->gcount() != sizeof(acn_id))
return stream->setstate(std::ios_base::failbit);
if (memcmp(acn_id, ACN_PACKET_IDENTIFIER, 12) != 0) // memcmp returns 0 if matched
if (memcmp(acn_id, ACN_PACKET_IDENTIFIER, sizeof(acn_id))) // memcmp returns 0 if matched
return stream->setstate(std::ios_base::failbit);
@ -98,7 +98,7 @@ void transport::oStream(PDU::Stream stream) const
*stream << length;
*stream << postamble_size;
stream->write(acn_id, sizeof(acn_id));
for ( auto& pdu : *root.pdu )
for ( const auto& pdu : *root.pdu )
*stream << pdu;
}

View File

@ -29,18 +29,6 @@
namespace SACN {
namespace EXTENDED {
/**
* @brief frame_sync_header::streamSize
* @return
*/
size_t sync_header::streamSize() const
{
return sizeof(sequence_number)
+ sizeof(sync_address)
+ sizeof(reserved);
}
/**
* @brief frame_sync_header::iStream
* @param stream
@ -49,9 +37,7 @@ void sync_header::iStream(ACN::PDU::Stream stream)
{
*stream >> sequence_number;
*stream >> sync_address;
stream->read(reserved, sizeof(reserved));
if (stream->gcount() != sizeof(reserved))
return stream->setstate(std::ios_base::failbit);
*stream >> reserved;
}
@ -59,20 +45,11 @@ void sync_header::iStream(ACN::PDU::Stream stream)
* @brief sync_header::oStream
* @return
*/
void sync_header::oStream(ACN::PDU::Stream) const
void sync_header::oStream(ACN::PDU::Stream stream) const
{
/// TODO: write header to stream
}
/**
* @brief discovery_header::streamSize
* @return
*/
size_t discovery_header::streamSize() const
{
return sizeof(source_name)
+ sizeof(reserved);
*stream << sequence_number;
*stream << sync_address;
*stream << reserved;
}
@ -82,12 +59,8 @@ size_t discovery_header::streamSize() const
*/
void discovery_header::iStream(ACN::PDU::Stream stream)
{
stream->read(source_name, sizeof(source_name));
if (stream->gcount() != sizeof(source_name))
return stream->setstate(std::ios_base::failbit);
stream->read(reserved, sizeof(reserved));
if (stream->gcount() != sizeof(reserved))
return stream->setstate(std::ios_base::failbit);
stream->readString(source_name, 64);
*stream >> reserved;
}
@ -95,9 +68,10 @@ void discovery_header::iStream(ACN::PDU::Stream stream)
* @brief discovery_header::oStream
* @return
*/
void discovery_header::oStream(ACN::PDU::Stream) const
void discovery_header::oStream(ACN::PDU::Stream stream) const
{
/// TODO: write header to stream
stream->writeString(source_name, 64);
*stream << reserved;
}
@ -129,17 +103,6 @@ void Pdu::iStream(ACN::PDU::Stream stream)
namespace DISCOVERY {
/**
* @brief discovery_list_header::streamSize
* @return
*/
size_t discovery_list_header::streamSize() const
{
return sizeof(page)
+ sizeof(last_page);
}
/**
* @brief discovery_list_header::iStream
* @param stream
@ -155,9 +118,10 @@ void discovery_list_header::iStream(ACN::PDU::Stream stream)
* @brief discovery_list_header::oStream
* @return
*/
void discovery_list_header::oStream(ACN::PDU::Stream) const
void discovery_list_header::oStream(ACN::PDU::Stream stream) const
{
/// TODO: write header to stream
*stream << page;
*stream << last_page;
}
@ -169,9 +133,8 @@ void discovery_list_data::iStream(ACN::PDU::Stream stream)
{
while (stream->good())
{
auto f = discoveredUniverse();
*stream >> f.universe;
found.push_back(f);
found.emplace_back(discoveredUniverse());
*stream >> found.back().universe;
}
}
@ -215,7 +178,7 @@ void Pdu::iStream(ACN::PDU::Stream stream)
for ( auto & f : data->found )
{
f.source = root_header->cid;
f.description = std::string((char*)frame_header->source_name);
f.description = frame_header->source_name;
}
}
}

View File

@ -39,11 +39,11 @@ struct sync_header
{
uint8_t sequence_number;
uint16_t sync_address;
uint8_t reserved[2];
uint16_t reserved;
size_t streamSize() const override;
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
size_t streamSize() const override { return 5; }
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
};
@ -53,12 +53,12 @@ struct sync_header
struct discovery_header
: ACN::PDU::pdu_header
{
uint8_t source_name[64];
uint8_t reserved[4];
std::string source_name;
uint32_t reserved;
size_t streamSize() const override;
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
size_t streamSize() const override { return 68; }
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
};
@ -85,9 +85,9 @@ struct discovery_list_header
uint8_t page;
uint8_t last_page;
size_t streamSize() const override;
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
size_t streamSize() const override { return 2; }
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
};
@ -112,9 +112,9 @@ struct discovery_list_data
{
std::vector<discoveredUniverse> found;
size_t streamSize() const override { return found.size(); }
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
size_t streamSize() const override { return 2 * found.size(); }
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
};