Cross-vendor rich types

One keyed struct in all three XTypes extensibilities, against four other DDS stacks, in both directions.

What it shows

  • RichF / RichA / RichM — the same members under @final, @appendable and @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 (0x0001 for @final); Fast DDS and RTI Connext stay on XCDR1 throughout (0x0001/0x0001/0x0003).
  • Fast DDS and RTI share 0x0003 for @mutable but differ one level down — Fast DDS uses the short parameter id, RTI the PID_EXTENDED long 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.

Was es zeigt

  • RichF / RichA / RichM — dieselben Member unter @final, @appendable und @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 (0x0001 bei @final); Fast DDS und RTI Connext bleiben durchgehend auf XCDR1 (0x0001/0x0001/0x0003).
  • Fast DDS und RTI teilen sich 0x0003 für @mutable, unterscheiden sich aber eine Ebene tiefer — Fast DDS nimmt die kurze Parameter-Id, RTI die PID_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

Verwandt