Skip to main content

Module inline_qos

Module inline_qos 

Source
Expand description

Inline-QoS-Helper fuer DDS-RPC und SEDP (DDS-RPC 1.0 §7.8.2).

Inline-QoS ist eine crate::parameter_list::ParameterList im Body einer DATA/DATA_FRAG-Submessage (Q-Flag, Spec §9.4.5.3). Phase 2 nutzt sie bereits fuer PID_KEY_HASH, PID_STATUS_INFO etc. — dieses Modul ergaenzt Helper fuer die RPC-spezifischen Inline-QoS-PIDs:

  • PID_RELATED_SAMPLE_IDENTITY = 0x0083 (DDS-RPC 1.0 §7.8.2): wird vom Reply-Writer in der Inline-QoS jeder Reply-DATA gesetzt; Wert ist die request_id (SampleIdentity = 16 byte writer_guid + 8 byte sequence_number) des korrelierten Requests. Encoding: XCDR2-Final, Alignment-Cap=4, also 24 byte ohne Padding.

Wir kapseln Encode/Decode hier, damit zerodds-rpc ohne harte Abhaengigkeit auf RTPS-Internas wie Parameter-Layout arbeiten kann.

Modules§

status_info
Spec §9.6.3.9 — PID_STATUS_INFO-Bits.

Structs§

SampleIdentityBytes
Wire-Repraesentation einer SampleIdentity (DDS-RPC 1.0 §7.5.1.1.1).

Constants§

SAMPLE_IDENTITY_WIRE_SIZE
Spec-Konstante: 16 byte writer-GUID + 8 byte sequence-number.

Functions§

directed_write_matches_reader
Spec §8.7.7 — Receiver-side Filter: liefert true, wenn das Sample an den Reader mit own_reader_guid adressiert ist (oder kein Directed-Write gesetzt ist). false wenn ein PID_DIRECTED_WRITE vorhanden ist und der Wert NICHT mit own_guid uebereinstimmt — der Caller MUSS dann das Sample verwerfen.
directed_write_param
Spec §8.7.7 / §9.6.2.2.5 — PID_DIRECTED_WRITE als Inline-QoS. Markiert ein Sample als Punkt-zu-Punkt-Send an einen einzigen Ziel-Reader (16 byte GUID). Andere Reader, die das Sample empfangen (z.B. via Multicast), MUESSEN es verwerfen.
find_directed_write
Liest PID_DIRECTED_WRITE aus einer Inline-QoS-Liste.
find_key_hash
Liest PID_KEY_HASH aus einer Inline-QoS-Liste (Spec §9.6.4.8 + XTypes 1.3 §7.6.8). Liefert die 16-byte Identitaet der Instanz, oder None wenn die PID fehlt / das Value eine unzulaessige Laenge hat.
find_original_writer_info
Liest PID_ORIGINAL_WRITER_INFO aus einer Inline-QoS-Liste.
find_related_sample_identity
Liest PID_RELATED_SAMPLE_IDENTITY aus einer Inline-QoS-Liste.
find_status_info
Liest PID_STATUS_INFO aus einer Inline-QoS-Liste. Liefert das 4-byte Statusword, oder None wenn die PID fehlt / das Value nicht 4 byte ist.
lifecycle_inline_qos
Baut eine Inline-QoS-ParameterList fuer einen Lifecycle-Marker — PID_KEY_HASH (16 byte) + PID_STATUS_INFO (4 byte). Wird vom Writer beim dispose/unregister_instance gesendet.
original_writer_info_param
Spec §8.7.9 — PID_ORIGINAL_WRITER_INFO als Inline-QoS. 24-byte Wert: 16 byte original GUID + 8 byte SequenceNumber (signed i64). Vom Persistence-Service gesetzt, wenn er ein historisches Sample im Auftrag eines anderen Writers weiterleitet.
related_sample_identity_param
Baut einen Parameter mit PID_RELATED_SAMPLE_IDENTITY (0x0083) und dem 24-byte XCDR2-Encoding der SampleIdentity als Value.
reply_inline_qos
Baut eine Inline-QoS-ParameterList, die nur den PID_RELATED_SAMPLE_IDENTITY traegt — gut genug fuer die Reply-DATA einer einfachen RPC-Operation. Caller koennen weitere Parameter (PID_KEY_HASH etc.) per push ergaenzen.
status_info_param
Baut einen Parameter mit PID_STATUS_INFO (0x0071). Wert ist ein 4-byte Statusword (Bits per status_info). Spec verlangt Big-Endian-Encoding unabhaengig vom RTPS-Header-Endianess (DDSI-RTPS 2.5 §9.6.3.9).