pub struct MessageBuilder { /* private fields */ }Expand description
Submessage-Aggregator.
Wird bei open mit einer vor-allokierten Byte-Liste beginnend beim
RTPS-Header initialisiert. Submessages werden per try_add_submessage
angehaengt; bei Full muss Caller finish() + neuen Builder.
Implementations§
Source§impl MessageBuilder
impl MessageBuilder
Sourcepub fn open(header: RtpsHeader, targets: Rc<Vec<Locator>>, mtu: usize) -> Self
pub fn open(header: RtpsHeader, targets: Rc<Vec<Locator>>, mtu: usize) -> Self
Oeffnet einen neuen Builder mit gegebenem RTPS-Header, Zielen und MTU-Budget.
Panics: wenn mtu kleiner als der RTPS-Header (20 Byte).
Sourcepub fn submsg_count(&self) -> usize
pub fn submsg_count(&self) -> usize
Anzahl bisher eingefuegter Submessages.
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Aktuelle Gesamt-Byte-Zahl (Header + bereits angehaengte Submessages).
Sourcepub fn try_add_submessage(
&mut self,
id: SubmessageId,
flags: u8,
body: &[u8],
) -> Result<(), AddError>
pub fn try_add_submessage( &mut self, id: SubmessageId, flags: u8, body: &[u8], ) -> Result<(), AddError>
Versucht, eine Submessage anzuhaengen. Liefert
AddError::WouldExceedMtu, wenn sie nicht mehr reinpasst —
dann ist finish() + neuer Builder faellig.
flags enthaelt nur die submessage-spezifischen Flags
(F, L, Q, H, K, N etc.). Das E-Bit (Little-Endian) setzt der
Builder selbst, konsistent fuer das ganze Datagramm.
§Errors
AddError::WouldExceedMtubei Size-Overflow.AddError::BodyTooLargewennbody.len() > u16::MAX.
Sourcepub fn finish(self) -> Option<OutboundDatagram>
pub fn finish(self) -> Option<OutboundDatagram>
Wandelt in ein fertiges OutboundDatagram um.
Liefert None bei leerem Builder (nur RTPS-Header ohne
Submessages) — das erlaubt Aufrufern, unbenutzte Builder
einfach zu verwerfen, ohne vorher is_empty() pruefen zu
muessen.