|
CIRCT 23.0.0git
|
Abstract multi-segment message. More...
#include <Common.h>

Public Member Functions | |
| virtual | ~SegmentedMessageData ()=default |
| virtual size_t | numSegments () const =0 |
| Number of segments in the message. | |
| virtual Segment | segment (size_t idx) const =0 |
| Get a segment by index. | |
| size_t | totalSize () const |
| Total size across all segments. | |
| bool | empty () const |
| True if totalSize() == 0. | |
| MessageData | toMessageData () const |
| Flatten all segments into a standard MessageData. | |
Abstract multi-segment message.
Generated types subclass this to expose header + list segments without flattening into a contiguous buffer.
This class does NOT replace MessageData. It lives alongside it.
Subclasses MUST own all data that their segments point to. The write API takes ownership (unique_ptr<SegmentedMessageData>) and a backend may hold the message across async boundaries / partial writes.
|
virtualdefault |
| bool SegmentedMessageData::empty | ( | ) | const |
|
pure virtual |
Number of segments in the message.
Implemented in SerialCoordInput, and SerialCoordInput.
Referenced by esi::SegmentedMessageDataCursor::done(), esi::SegmentedMessageDataCursor::remaining(), toMessageData(), and totalSize().
|
pure virtual |
Get a segment by index.
Implemented in SerialCoordInput, and SerialCoordInput.
Referenced by esi::SegmentedMessageDataCursor::advance(), esi::SegmentedMessageDataCursor::remaining(), toMessageData(), and totalSize().
| MessageData SegmentedMessageData::toMessageData | ( | ) | const |
Flatten all segments into a standard MessageData.
Definition at line 60 of file Common.cpp.
References esi::Segment::data, numSegments(), segment(), esi::Segment::size, and totalSize().
| size_t SegmentedMessageData::totalSize | ( | ) | const |
Total size across all segments.
Definition at line 51 of file Common.cpp.
References numSegments(), segment(), and esi::Segment::size.
Referenced by empty(), and toMessageData().