zerodds-iceoryx-cyclone
Same-host shared memory. Bridge between ZeroDDS and Cyclone DDS over the iceoryx C++ (POSH) shared-memory transport; it follows Cyclone's PSMX chunk convention and implements no OMG specification.
- Source: crates/iceoryx-cyclone
- API docs: docs.rs/zerodds-iceoryx-cyclone
Cyclone DDS uses iceoryx POSH, with the iox-roudi daemon, through its
iox_psmx plugin. zerodds-iceoryx-cyclone binds the C ABI of
libiceoryx_binding_c and reads and writes chunks in Cyclone's PSMX convention, so a
ZeroDDS process can read samples a Cyclone writer publishes and write samples a Cyclone reader
takes. This path is separate from the iceoryx2 bridge in zerodds-flatdata.
DdsPsmxMetadata—#[repr(C)]layout of Cyclone'sdds_psmx_metadata_t, the iceoryx user header of every chunk (instance_idisu32).raw()builds the header for a raw native struct (STATE_RAW_DATA= 2),serialized()the one for a classic CDR little-endian sample (STATE_SERIALIZED_DATA= 4).CYCLONE_IOX_SERVICE="DDS_CYCLONE";iox_event_name(partition, topic)builds"<partition>.<topic>". The iceoryx service description is{ "DDS_CYCLONE", <type name>, ".<topic>" }for the empty partition.- With
poshon Linux:init_runtime,CycloneIoxReader(new,discover_by_instance,take),CycloneIoxWriter(new,write_raw).
According to the README, Cyclone accepts the ZeroDDS writer, a plain iceoryx publisher that DDS
discovery does not know, only with ALLOW_NONDISCOVERED_WRITERS=true in its PSMX
configuration.
Consumers
zerodds-dcps— optional dependency behind its featurecyclone-iox, which also enablesposhhere. A DataWriter or DataReader on whichenable_cyclone_ioxwas called publishes or subscribes PSMX-shaped chunks through this crate.
Features
posh(off;default = []) — compiles the FFI module undercfg(all(target_os = "linux", feature = "posh")).build.rsthen linkslibiceoryx_binding_candlibstdc++, with/usr/lib/x86_64-linux-gnuas search path;ICEORYX_LIB_DIRadds another. Both binaries require it. Withoutposh, the crate exposes onlyDdsPsmxMetadata,CYCLONE_IOX_SERVICEandiox_event_nameand builds on any platform.
Status
std; noforbid(unsafe_code). Theposhmodule calls the iceoryx C ABI throughunsafeFFI.- Binaries
zerodds-cyclone-iox-readerandzerodds-cyclone-iox-writer(requireposhand a runningiox-roudi), one per direction. The crate is excluded from the cargo-dist release binaries (dist = false). - No test functions in the source. The script
proofs/run.shbuilds the crate and a Cyclone publisher and subscriber, startsiox-roudiand checks both directions; it needs Linux with Cyclone DDS and iceoryx POSH.
zerodds-iceoryx-cyclone
Gemeinsamer Speicher auf einem Host. Brücke zwischen ZeroDDS und Cyclone DDS über den Shared-Memory-Transport von iceoryx C++ (POSH); sie folgt der PSMX-Konvention von Cyclone für Chunks und implementiert keine OMG-Spezifikation.
- Quelle: crates/iceoryx-cyclone
- API-Docs: docs.rs/zerodds-iceoryx-cyclone
Cyclone DDS nutzt iceoryx POSH mit dem Daemon iox-roudi über sein Plugin
iox_psmx. zerodds-iceoryx-cyclone bindet die C-ABI von
libiceoryx_binding_c an und liest und schreibt Chunks in der PSMX-Konvention von Cyclone,
sodass ein ZeroDDS-Prozess Samples lesen kann, die ein Cyclone-Writer veröffentlicht, und Samples
schreiben kann, die ein Cyclone-Reader entnimmt. Dieser Weg ist getrennt von der Brücke zu iceoryx2
in zerodds-flatdata.
DdsPsmxMetadata— Layout#[repr(C)]vondds_psmx_metadata_taus Cyclone, dem iceoryx-Benutzerkopf jedes Chunks (instance_idistu32).raw()baut den Kopf für eine rohe native Struktur (STATE_RAW_DATA= 2),serialized()den für ein Sample in klassischem CDR, Little Endian (STATE_SERIALIZED_DATA= 4).CYCLONE_IOX_SERVICE="DDS_CYCLONE";iox_event_name(partition, topic)baut"<partition>.<topic>". Die Dienstbeschreibung in iceoryx ist für die leere Partition{ "DDS_CYCLONE", <type name>, ".<topic>" }.- Mit
poshunter Linux:init_runtime,CycloneIoxReader(new,discover_by_instance,take),CycloneIoxWriter(new,write_raw).
Laut README nimmt Cyclone den ZeroDDS-Writer, einen einfachen iceoryx-Publisher, den die
DDS-Discovery nicht kennt, nur mit ALLOW_NONDISCOVERED_WRITERS=true in seiner
PSMX-Konfiguration an.
Konsumenten
zerodds-dcps— optionale Abhängigkeit hinter dessen Featurecyclone-iox, das hier zugleichposhaktiviert. Ein DataWriter oder DataReader, auf demenable_cyclone_ioxaufgerufen wurde, veröffentlicht oder abonniert über dieses Crate Chunks in PSMX-Form.
Features
posh(aus;default = []) — kompiliert das FFI-Modul untercfg(all(target_os = "linux", feature = "posh")).build.rsbindet dannlibiceoryx_binding_cundlibstdc++ein, mit/usr/lib/x86_64-linux-gnuals Suchpfad;ICEORYX_LIB_DIRfügt einen weiteren hinzu. Beide Binaries setzen es voraus. Ohneposhstellt das Crate nurDdsPsmxMetadata,CYCLONE_IOX_SERVICEundiox_event_namebereit und baut auf jeder Plattform.
Status
std; keinforbid(unsafe_code). Das Modulposhruft die C-ABI von iceoryx überunsafe-FFI auf.- Binaries
zerodds-cyclone-iox-readerundzerodds-cyclone-iox-writer(setzenposhund ein laufendesiox-roudivoraus), je eines pro Richtung. Das Crate ist von den Release-Binaries über cargo-dist ausgenommen (dist = false). - Keine Testfunktionen im Quelltext. Das Skript
proofs/run.shbaut das Crate sowie einen Publisher und einen Subscriber für Cyclone, startetiox-roudiund prüft beide Richtungen; es braucht Linux mit Cyclone DDS und iceoryx POSH.