Cross-vendor rich types
One keyed struct in all three XTypes extensibilities, against four other DDS stacks, in both directions.
- Example:
cross-vendor-rich - Repository: zero-dds-snippets
What it shows
RichF/RichA/RichM— the same members under@final,@appendableand@mutable, so each maps to a different wire form.- The measured encapsulation ids fall into three dialects: ZeroDDS and OpenDDS emit
0x0007/0x0009/0x000b; CycloneDDS is hybrid (0x0001for@final); Fast DDS and RTI Connext stay on XCDR1 throughout (0x0001/0x0001/0x0003). - Fast DDS and RTI share
0x0003for@mutablebut differ one level down — Fast DDS uses the short parameter id, RTI thePID_EXTENDEDlong form with MUST_UNDERSTAND (0x7F01). - The big-endian half is exercised by telling the ZeroDDS writer to emit BE (
ZERODDS_WIRE_BIG_ENDIAN=1→0x0006/0x0008/0x000a); all four stacks decode it.
Layout
zerodds/ ZeroDDS Rust (generated types)
cyclone/ CycloneDDS Python
fastdds/ Fast DDS C++
opendds/ OpenDDS C++
rti/ RTI Connext C++11
See also
Cross-Vendor — reiche Typen
Ein Keyed-Struct in allen drei XTypes-Extensibilities, gegen vier andere DDS-Stacks, in beide Richtungen.
- Beispiel:
cross-vendor-rich - Repository: zero-dds-snippets
Was es zeigt
RichF/RichA/RichM— dieselben Member unter@final,@appendableund@mutable, sodass jede Variante auf eine andere Wire-Form abbildet.- Die gemessenen Encapsulation-Ids fallen in drei Dialekte: ZeroDDS und OpenDDS senden
0x0007/0x0009/0x000b; CycloneDDS ist hybrid (0x0001bei@final); Fast DDS und RTI Connext bleiben durchgehend auf XCDR1 (0x0001/0x0001/0x0003). - Fast DDS und RTI teilen sich
0x0003für@mutable, unterscheiden sich aber eine Ebene tiefer — Fast DDS nimmt die kurze Parameter-Id, RTI diePID_EXTENDED-Langform mit MUST_UNDERSTAND (0x7F01). - Die Big-Endian-Hälfte wird abgedeckt, indem der ZeroDDS-Writer BE senden soll (
ZERODDS_WIRE_BIG_ENDIAN=1→0x0006/0x0008/0x000a); alle vier Stacks decodieren das.
Aufbau
zerodds/ ZeroDDS Rust (generierte Typen)
cyclone/ CycloneDDS Python
fastdds/ Fast DDS C++
opendds/ OpenDDS C++
rti/ RTI Connext C++11