|
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. | |
| virtual 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.
MessageData is the canonical flat, one-segment implementation of this interface. Other subclasses represent naturally segmented layouts.
Subclasses MUST own all data that their segments point to. Read and write APIs can hold the message across async boundaries / retries.
|
virtualdefault |
| bool SegmentedMessageData::empty | ( | ) | const |
|
pure virtual |
Number of segments in the message.
Implemented in esi::MessageData, SerialCoordInput, SerialCoordBurst, and SerialCoordInput.
Referenced by esi::SegmentedMessageDataCursor::done(), esi::SegmentedMessageDataCursor::remaining(), toMessageData(), and totalSize().
|
pure virtual |
Get a segment by index.
Implemented in esi::MessageData, SerialCoordInput, SerialCoordBurst, and SerialCoordInput.
Referenced by esi::SegmentedMessageDataCursor::advance(), esi::SegmentedMessageDataCursor::remaining(), toMessageData(), and totalSize().
|
virtual |
Flatten all segments into a standard MessageData.
Reimplemented in esi::MessageData.
Definition at line 60 of file Common.cpp.
References esi::Segment::data, numSegments(), segment(), esi::Segment::size, and totalSize().
Referenced by esi::detail::getMessageDataRef().
| 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().