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 dierequest_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§
- Sample
Identity Bytes - 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 mitown_reader_guidadressiert ist (oder kein Directed-Write gesetzt ist).falsewenn 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_WRITEals 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_WRITEaus einer Inline-QoS-Liste. - find_
key_ hash - Liest
PID_KEY_HASHaus einer Inline-QoS-Liste (Spec §9.6.4.8 + XTypes 1.3 §7.6.8). Liefert die 16-byte Identitaet der Instanz, oderNonewenn die PID fehlt / das Value eine unzulaessige Laenge hat. - find_
original_ writer_ info - Liest
PID_ORIGINAL_WRITER_INFOaus einer Inline-QoS-Liste. - find_
related_ sample_ identity - Liest
PID_RELATED_SAMPLE_IDENTITYaus einer Inline-QoS-Liste. - find_
status_ info - Liest
PID_STATUS_INFOaus einer Inline-QoS-Liste. Liefert das 4-byte Statusword, oderNonewenn die PID fehlt / das Value nicht 4 byte ist. - lifecycle_
inline_ qos - Baut eine Inline-QoS-
ParameterListfuer einen Lifecycle-Marker —PID_KEY_HASH(16 byte) +PID_STATUS_INFO(4 byte). Wird vom Writer beimdispose/unregister_instancegesendet. - original_
writer_ info_ param - Spec §8.7.9 —
PID_ORIGINAL_WRITER_INFOals 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
ParametermitPID_RELATED_SAMPLE_IDENTITY(0x0083) und dem 24-byte XCDR2-Encoding derSampleIdentityals Value. - reply_
inline_ qos - Baut eine Inline-QoS-
ParameterList, die nur denPID_RELATED_SAMPLE_IDENTITYtraegt — gut genug fuer die Reply-DATA einer einfachen RPC-Operation. Caller koennen weitere Parameter (PID_KEY_HASHetc.) perpushergaenzen. - status_
info_ param - Baut einen
ParametermitPID_STATUS_INFO(0x0071). Wert ist ein 4-byte Statusword (Bits perstatus_info). Spec verlangt Big-Endian-Encoding unabhaengig vom RTPS-Header-Endianess (DDSI-RTPS 2.5 §9.6.3.9).