Expand description
Crate zerodds-iceoryx-cyclone. Safety classification: STANDARD
(FFI bridge over libiceoryx_binding_c; unsafe is reviewed and bounded).
ZeroDDS ↔ Cyclone DDS same-host zero-copy bridge over the iceoryx C++
(POSH) shared-memory transport — the SHM stack Cyclone uses through its
iox_psmx plugin (with the iox-roudi daemon), as opposed to the
iceoryx2-Rust stack zerodds_flatdata bridges to natively.
This crate FFI-binds the stable libiceoryx_binding_c C ABI (no C++ name
mangling) and speaks Cyclone’s PSMX chunk convention directly, so a ZeroDDS
process can READ a Cyclone-published sample and WRITE one a Cyclone reader
consumes — true cross-vendor same-host zero-copy.
Wire facts (reverse-engineered + live-verified, see
docs/interop/cyclone-iceoryx-shm-ground-truth.md):
- iceoryx ServiceDescription
{ "DDS_CYCLONE", <type-name>, ".<topic>" }; - each chunk’s iceoryx user-header is a
DdsPsmxMetadata, the user payload the sample (raw native struct for a self-contained type —RAW_DATA).
Linux + iceoryx-POSH only: the FFI compiles under
cfg(all(target_os = "linux", feature = "posh")) and links
libiceoryx_binding_c. Without the feature the crate exposes only the
representation-level DdsPsmxMetadata type so it builds anywhere.
Structs§
- DdsPsmx
Metadata - Cyclone
dds_psmx_metadata_t(dds/ddsc/dds_psmx.h) — the iceoryx user-header carried alongside every PSMX sample. Field sizes are the live-verified layout:instance_idisu32(notu64), which is what placessample_sizeat the correct offset.
Constants§
- CYCLONE_
IOX_ SERVICE - The fixed iceoryx service string Cyclone’s
iox_psmxregisters under.
Functions§
- iox_
event_ name - Builds the iceoryx event string for
topicinpartitionthe way Cyclone does:"<partition>.<topic>", with a leading"."for the empty partition.