zenoh-plugin-dds
zenoh-plugin-dds copied to clipboard
Add support for the Cyclone DDS Iceoryx shared memory PSMX plugin
This PR updates the DDS plugin/bridge to support the new Iceoryx PSMX plugin in Cyclone DDS and removes support for the previous Iceoryx shared memory implementation.
Closes #212
This should now be complete but I'm waiting for a new release of cyclors before marking it as ready for review.
Tested on Linux and Windows. Note that the Iceoryx PSMX plugin doesn't compile on Windows so the shared memory feature is not supported on this platform. @JEnoch if you have time to test this on Mac that would be appreciated.
When --dds-enable-shm
is specified Cyclone DDS is configured to use the Iceoryx PSMX plugin with the default options. This supports keyless topics only. This can be expanded to keyed topics through providing a custom CYCLONEDDS_URI value which sets the appropriate options for the PSMX plugin.
Use of the feature in forward discovery mode is currently limited to serialized PSMX samples only due to the lack of type information across the bridge. Samples will be serialized where the type contains indirections such as strings.
I confirm it works as expected on MacOS.
Tested with Iceoryx 2.0.5, CycloneDDS master branch commit 2caad2d8 and HelloWorld example (IDL modified to remove @key
). Commands:
$ ./iox-roudi
$ ./target/debug/zenoh-bridge-dds -d 0 --dds-enable-shm
$ ./target/debug/zenoh-bridge-dds -d 1 --dds-enable-shm
$ CYCLONEDDS_URI='<CycloneDDS><Domain Id="0"><General><Interfaces><PubSubMessageExchange name="iox" library="psmx_iox" /></Interfaces></General></Domain></CycloneDDS>' ./HelloworldSubscriber
$ CYCLONEDDS_URI='<CycloneDDS><Domain Id="1"><General><Interfaces><PubSubMessageExchange name="iox" library="psmx_iox" /></Interfaces></General></Domain></CycloneDDS>' ./HelloworldPublisher
PR missing one of the required labels: breaking-change bug dependencies documentation enhancement new feature internal
PR missing one of the required labels: breaking-change bug dependencies documentation enhancement new feature internal
PR missing one of the required labels: breaking-change bug dependencies documentation enhancement new feature internal
Rebased to main. @JEnoch can you review, please?
PR missing one of the required labels: breaking-change bug dependencies documentation enhancement new feature internal
PR missing one of the required labels: breaking-change bug dependencies documentation enhancement new feature internal
Tested on MacOS with Iceoryx 2.0.5, CycloneDDS 0.10.5 and HelloWorld example (IDL modified to remove @key). Commands:
-
iox-roudi
-
CYCLONEDDS_URI='<CycloneDDS><Domain Id="0"><SharedMemory><Enable>true</Enable><LogLevel>debug</LogLevel></SharedMemory></Domain></CycloneDDS>' ./HelloworldSubscriber
-
CYCLONEDDS_URI='<CycloneDDS><Domain Id="1"><SharedMemory><Enable>true</Enable><LogLevel>debug</LogLevel></SharedMemory></Domain></CycloneDDS>' ./HelloworldPublisher
-
./zenoh-bridge-dds -d 0 --dds-enable-shm
-
./zenoh-bridge-dds -d 1 --dds-enable-shm