Open t0ny-peng opened 5 months ago
From my test, CycloneDDS is compiled with Iceoryx (-DENABLE_ICEORYX=ON
) and the XML config file enables Iceoryx (<PubSubMessageExchange name="iox" library="psmx_iox" config="LOG_LEVEL=DEBUG;"/>
) , the throughput almost doubled than just using CycloneDDS along, which should indicate that Iceoryx is indeed being used.
The following is the output from iox-roudi
2024-04-11 14:45:09.232 [ Debug ]: Registered new application CycloneDDS-iox_psmx-5c0189fa3f81d5d8
2024-04-11 14:45:09.234 [ Debug ]: Created new ConditionVariable for application CycloneDDS-iox_psmx-5c0189fa3f81d5d8
2024-04-11 14:45:09.234 [ Debug ]: Created new SubscriberPort for application 'CycloneDDS-iox_psmx-5c0189fa3f81d5d8' with service description 'Service: ServiceDiscovery, Instance: RouDi_ID, Event: ServiceRegistry'
2024-04-11 14:45:09.235 [ Debug ]: Created new PublisherPort for application 'CycloneDDS-iox_psmx-5c0189fa3f81d5d8' with service description 'Service: CycloneDDS iox_psmx 3243198913, Instance: CycloneDDS-IOX-PSMX node_id discovery, Event: d8d5813ffa89015c0000000000000000'
2024-04-11 14:45:09.236 [ Debug ]: Registered new application CycloneDDS-iox_psmx-57aa1d5683be02d2
2024-04-11 14:45:09.238 [ Debug ]: capro::SUB/UNSUB, no matching publisher for subscriber from runtime 'CycloneDDS-iox_psmx-5c0189fa3f81d5d8' and with service description 'Service: CycloneDDS iox_psmx 3243198913, Instance: ThroughputModule::DataType, Event: Throughput example.Throughput'!
2024-04-11 14:45:09.238 [ Debug ]: Created new SubscriberPort for application 'CycloneDDS-iox_psmx-5c0189fa3f81d5d8' with service description 'Service: CycloneDDS iox_psmx 3243198913, Instance: ThroughputModule::DataType, Event: Throughput example.Throughput'
2024-04-11 14:45:09.238 [ Debug ]: Created new ConditionVariable for application CycloneDDS-iox_psmx-57aa1d5683be02d2
2024-04-11 14:45:09.238 [ Debug ]: Created new SubscriberPort for application 'CycloneDDS-iox_psmx-57aa1d5683be02d2' with service description 'Service: ServiceDiscovery, Instance: RouDi_ID, Event: ServiceRegistry'
2024-04-11 14:45:09.243 [ Debug ]: Created new PublisherPort for application 'CycloneDDS-iox_psmx-57aa1d5683be02d2' with service description 'Service: CycloneDDS iox_psmx 3243198913, Instance: ThroughputModule::DataType, Event: Throughput example.Throughput'
2024-04-11 14:45:09.331 [ Debug ]: Destroy subscriber port from runtime 'CycloneDDS-iox_psmx-5c0189fa3f81d5d8' and with service description 'Service: ServiceDiscovery, Instance: RouDi_ID, Event: ServiceRegistry'
2024-04-11 14:45:09.331 [ Debug ]: Destroy subscriber port from runtime 'CycloneDDS-iox_psmx-57aa1d5683be02d2' and with service description 'Service: ServiceDiscovery, Instance: RouDi_ID, Event: ServiceRegistry'
Thank you for your attention to detail! Yes, that restriction has been lifted quite some time ago and now all data types are supported.
I'll leave the issue open for tracking the required documentation update.
In the Limitation chapter of the doc(https://cyclonedds.io/docs/cyclonedds/latest/shared_memory/limitations.html), it is mentioned that "The data types to be exchanged need to have a fixed size".
However, the
ThroughputPublisher
IDL file does contain a unbounded sequence of octer(uint8_t) and it can be used with Iceoryx as the shared memory optimization.May I ask if that limitation has been lifted? Thanks!🙏
Background: We have variable length data stored in a
sequence<octet>
buffer and would like to enable the Iceoryx optimization.https://github.com/eclipse-cyclonedds/cyclonedds/blob/265d432101e0eab20220fc61b20d11d29676c3c8/examples/throughput/Throughput.idl#L7