pub struct DataSubmessage {
pub extra_flags: u16,
pub reader_id: EntityId,
pub writer_id: EntityId,
pub writer_sn: SequenceNumber,
pub inline_qos: Option<ParameterList>,
pub key_flag: bool,
pub non_standard_flag: bool,
pub serialized_payload: Arc<[u8]>,
}Expand description
DATA-Submessage. Phase 0 unterstuetzt nur D-Flag (Daten), kein Q (kein Inline-QoS), kein K, kein N.
serialized_payload ist Arc<[u8]> (WP 2.0a Zero-Copy-Spike).
Writer teilen sich die Payload-Allocation mit CacheChange und
allen DATA/DATA_FRAG-Datagrammen — clone() auf dieser Struct ist
ein reiner Refcount-Bump.
Fields§
§extra_flags: u16Reserved Extra-Flags (uint16, meist 0).
reader_id: EntityIdEmpfaenger-EntityId.
writer_id: EntityIdSender-EntityId.
writer_sn: SequenceNumberSequence-Number dieser DATA.
inline_qos: Option<ParameterList>Inline-QoS-ParameterList (Q-Flag, §9.4.5.3.2). None = kein
Q-Flag, kein Inline-QoS-Block. Trager fuer PID_KEY_HASH (WP 1.B),
PID_STATUS_INFO, PID_COHERENT_SET etc.
key_flag: boolK-Flag (Spec §8.3.8.2 Tab. 8.43). true: serialized_payload
enthaelt nur die @key-Felder (key-only Sample, z.B. dispose-
Marker). Der D-Flag kann gleichzeitig false sein, wenn nur Key
gesendet wird; in dem Fall ist serialized_payload ein
XCDR-codierter Key-Holder.
non_standard_flag: boolN-Flag (Spec §8.3.8.2 Tab. 8.43, NonStandardPayloadFlag).
true: serialized_payload ist NICHT in der durch
representation_identifier impliziten CDR-Variante codiert
(z.B. fuer DDS-Security-encrypted Payloads).
serialized_payload: Arc<[u8]>Serialisierter Payload (XCDR2-codiert oder vendor-spezifisch).
Implementations§
Source§impl DataSubmessage
impl DataSubmessage
Sourcepub fn write_body(&self, little_endian: bool) -> (Vec<u8>, u8)
pub fn write_body(&self, little_endian: bool) -> (Vec<u8>, u8)
Encoded den DATA-Body (ohne Submessage-Header) in einen Vec.
Setzt automatisch das D-Flag und ggf. das Q-Flag im
flags-Output (rueckgegeben), damit der Caller den
Submessage-Header korrekt fuellen kann.
Layout: extraFlags(2) + octetsToInlineQos(2) + readerId(4) + writerId(4) + writerSN(8) + [optional InlineQoS-PL] + payload.
Sourcepub fn read_body(body: &[u8], little_endian: bool) -> Result<Self, WireError>
pub fn read_body(body: &[u8], little_endian: bool) -> Result<Self, WireError>
Decoded den DATA-Body aus einem Slice. Backward-Compat-Wrapper fuer Caller, die kein Q-Flag tragen — Inline-QoS wird ignoriert.
§Errors
UnexpectedEof bei zu kurzem Body.
Sourcepub fn read_body_with_flags(
body: &[u8],
little_endian: bool,
flags: u8,
) -> Result<Self, WireError>
pub fn read_body_with_flags( body: &[u8], little_endian: bool, flags: u8, ) -> Result<Self, WireError>
Decoded den DATA-Body unter Beruecksichtigung der Submessage-Flags.
Wenn flags & DATA_FLAG_INLINE_QOS != 0 parst der Decoder die
ParameterList nach dem writerSN, vor dem Payload.
§Errors
UnexpectedEof bei zu kurzem Body. ParameterList-Fehler werden
als WireError durchgereicht.
Trait Implementations§
Source§impl Clone for DataSubmessage
impl Clone for DataSubmessage
Source§fn clone(&self) -> DataSubmessage
fn clone(&self) -> DataSubmessage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DataSubmessage
impl Debug for DataSubmessage
Source§impl PartialEq for DataSubmessage
impl PartialEq for DataSubmessage
Source§fn eq(&self, other: &DataSubmessage) -> bool
fn eq(&self, other: &DataSubmessage) -> bool
self and other values to be equal, and is used by ==.