Skip to main content

Module submessages

Module submessages 

Source
Expand description

RTPS-Submessages — DDSI-RTPS 2.5 §8.3.7.

Implementierte Submessages:

  • DATA (DataSubmessage) — §8.3.7.2.
  • HEARTBEAT (HeartbeatSubmessage) — §8.3.7.5.
  • ACKNACK (AckNackSubmessage) — §8.3.7.1.
  • GAP (GapSubmessage) — §8.3.7.4.
  • DATA_FRAG (DataFragSubmessage) — §8.3.7.3.
  • HEARTBEAT_FRAG (HeartbeatFragSubmessage) — §8.3.7.6.
  • NACK_FRAG (NackFragSubmessage) — §8.3.7.10.
  • INFO_SRC (InfoSourceSubmessage) — §8.3.7.9.
  • INFO_TS (InfoTimestampSubmessage) — §8.3.7.5/§8.3.8.5.
  • INFO_REPLY (InfoReplySubmessage) — §8.3.7.8.

ParameterList (Inline-QoS) lebt im separaten Modul crate::parameter_list; SecuredPayload-Wrapping liegt im zerodds-security-Crate (DDS-Security 1.2 §7.4).

§Endianness

Submessage-Bodies werden in der Endianness des Submessage-Headers geschrieben (E-Flag). Die hier gegebenen to_bytes_*/from_bytes_*- Funktionen nehmen explizite Endianness als Parameter — der Caller muss sie konsistent zum Header waehlen.

Structs§

AckNackSubmessage
ACKNACK-Submessage.
DataFragSubmessage
DATA_FRAG-Submessage. Traegt einen Ausschnitt (Fragmente) eines Samples, dessen Gesamtgroesse in sample_size steht.
DataSubmessage
DATA-Submessage. Phase 0 unterstuetzt nur D-Flag (Daten), kein Q (kein Inline-QoS), kein K, kein N.
FragmentNumberSet
Bitset von FragmentNumber-Werten ab bitmap_base. Analog zu SequenceNumberSet, aber mit FragmentNumber (u32) als Base statt SequenceNumber.
GapGroupInfo
Optionaler Trailer einer GAP-Submessage mit GroupInfo (G-Flag, §8.3.8.4.2).
GapSubmessage
GAP-Submessage. Signalisiert Reader, dass Writer Sequence-Numbers [gap_start, gap_list.bitmap_base) nie senden wird (alle vor gap_list.bitmap_base Lücken; die Bits in gap_list markieren individuelle weitere Lücken ab bitmap_base).
HeartbeatFragSubmessage
HEARTBEAT_FRAG-Submessage. Schickt der Writer, um den Reader zu informieren, dass Fragmente bis last_fragment_num fuer writer_sn verfuegbar sind. Writer sendet diese nicht; der Decoder wird dennoch bereitgehalten fuer Interop.
HeartbeatGroupInfo
Optionaler GroupInfo-Trailer einer HEARTBEAT-Submessage (§8.3.8.6.2).
HeartbeatSubmessage
HEARTBEAT-Submessage.
InfoReplySubmessage
InfoReply-Submessage (§8.3.8.10.4). Setzt im ReceiverState unicastReplyLocatorList (Pflicht) und ggf. multicastReplyLocatorList (wenn M-Flag).
InfoSourceSubmessage
InfoSource-Submessage (§8.3.8.9.4). Setzt im ReceiverState sourceProtocolVersion, sourceVendorId, sourceGuidPrefix neu — alle nachfolgenden Submessages werden dieser Quelle zugeordnet (nicht dem Datagram-Header).
InfoTimestampSubmessage
InfoTimestamp-Submessage (§8.3.7.5 / §8.3.8.5). Setzt im ReceiverState das timestamp-Feld + haveTimestamp Flag. Wird via INFO_TIMESTAMP_FLAG_INVALIDATE invertiert (I-Flag).
NackFragSubmessage
NACK_FRAG-Submessage. Reader meldet fehlende Fragmente fuer einen bestimmten writer_sn. Auf der Wire keine Flags ausser E.
SequenceNumberSet
Bitset von Sequence-Numbers ab bitmap_base. Wird in HEARTBEAT/ ACKNACK/GAP genutzt, um Mengen verlorener oder bekannter Pakete zu signalisieren.

Constants§

ACKNACK_FLAG_FINAL
ACKNACK Flag: F (Final).
DATA_FLAG_DATA
DATA-Submessage Flag: D (data payload present).
DATA_FLAG_INLINE_QOS
DATA-Submessage Flag: Q (Inline-QoS present).
DATA_FLAG_KEY
DATA-Submessage Flag: K (key payload present, Q-flag mutually exclusive with D).
DATA_FLAG_NON_STANDARD
DATA-Submessage Flag: N (non-standard payload).
DATA_FRAG_FLAG_HASH_KEY
DATA_FRAG Flag: H (hash key).
DATA_FRAG_FLAG_INLINE_QOS
DATA_FRAG Flag: Q (Inline-QoS present).
DATA_FRAG_FLAG_KEY
DATA_FRAG Flag: K (key flag — serialized_payload ist Key statt Data).
DATA_FRAG_FLAG_NON_STANDARD
DATA_FRAG Flag: N (non-standard payload).
GAP_FLAG_FILTERED_COUNT
GAP Flag: K (FilteredCount present). Spec §8.3.8.4.2 fuehrt ein optionales Count_t filteredCount-Trailer-Feld ein, das dem Reader erlaubt, “via Content-Filter weggeworfen” von “echt removed” zu unterscheiden — Voraussetzung fuer korrekte Instance-State-Transitionen nach §8.7.4 (NOT_ALIVE_FILTERED vs. NOT_ALIVE_DISPOSED).
GAP_FLAG_GROUP_INFO
GAP Flag: G (GroupInfo present — gapStartGSN/gapEndGSN Trailer). Vendor-Extension fuer Group-Ordered-Access (§8.3.8.4.2). ZeroDDS-Encoder setzt das nicht; der Decoder akzeptiert es lesend.
HEARTBEAT_FLAG_FINAL
HEARTBEAT Flag: F (Final).
HEARTBEAT_FLAG_GROUP_INFO
HEARTBEAT Flag: G (GroupInfo present). Vendor-Extension fuer Group-Ordered-Access (§8.3.8.6.2). Trailer enthaelt currentGSN, firstGSN, lastGSN und einen writerSet (Liste der GUID-Prefixe der Gruppen-Member).
HEARTBEAT_FLAG_LIVELINESS
HEARTBEAT Flag: L (Liveliness).
INFO_REPLY_FLAG_MULTICAST
InfoReply Flag: M (Multicast). Wenn gesetzt: zweite LocatorList (multicastReplyLocatorList) folgt im Body.
INFO_TIMESTAMP_FLAG_INVALIDATE
InfoTimestamp Flag: I (Invalidate). Wenn gesetzt: Body ist leer und haveTimestamp wird im ReceiverState auf false gesetzt.
RTPS_BITMAP_MAX_BITS
Hard-Cap fuer numBits in SequenceNumberSet und FragmentNumberSet. DDSI-RTPS gibt kein spezifisches Limit vor, aber sowohl Cyclone DDS (ddsi_radmin.c) als auch Fast-DDS (BitmapRange<..., 256>) capen auf 256. Wir folgen — verhindert DoS via numBits=2^32-1-Bitmap-Alloc.