Skip to content

Conversation

@eboasson
Copy link
Collaborator

@eboasson eboasson commented Jun 28, 2024

This PR takes the type definition/discovery work from #445, and adds the changes needed to match the work done on Cyclone DDS's master branch since that PR was made. The big change here is the refactoring that moved the Iceoryx support into a plugin.

All old configs and code not using any special features should work unchanged, but the RMW layer does its own serialization and needs to support loans, and these necessitates some changes.

It also means that Iceoryx is no longer needed as build dependency, but I think it is important that the RMW layer continues to work unchanged with 0.10.x, at least until there is a tag/branch for the next release of Cyclone that incorporates all those changes.

This is a draft PR because I haven't gotten around to checking all combinations of not-loan/loan, serialized/not-serialized, simple/complex types, etc. etc. etc. I do think it worthwhile to make it easy to find for everyone else who is curious and to reduce the risk of double work, in case someone else also decides to give it a try.

Fixes #525

@mcp-ats
Copy link

mcp-ats commented May 5, 2025

Hey @eboasson I would love to try this on my setup running Jazzy but I have some problems like the following due to some API changes.

I would like to try it since I read in other issues related to using multiple interfaces that the newer version of CycloneDDS might fix them.

See here eclipse-cyclonedds/cyclonedds#2024 (comment)

Thanks!

serdata.cpp:859:3: error: invalid conversion from ‘std::size_t (*)(const ddsi_sertype*, const void*)’ {aka ‘long unsigned int (*)(const ddsi_sertype*, const void*)’} to ‘ddsi_sertype_get_serialized_size_t’ {aka ‘int (*)(const ddsi_sertype*, ddsi_serdata_kind, const void*, long unsigned int*, short unsigned int*)’} [-fpermissive] 859 | sertype_get_serialized_size, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | std::size_t (*)(const ddsi_sertype*, const void*) {aka long unsigned int (*)(const ddsi_sertype*, const void*)} serdata.cpp:860:3: error: invalid conversion from ‘bool (*)(const ddsi_sertype*, const void*, void*, std::size_t)’ {aka ‘bool (*)(const ddsi_sertype*, const void*, void*, long unsigned int)’} to ‘ddsi_sertype_serialize_into_t’ {aka ‘bool (*)(const ddsi_sertype*, ddsi_serdata_kind, const void*, void*, long unsigned int)’} [-fpermissive] 860 | sertype_serialize_into | ^~~~~~~~~~~~~~~~~~~~~~ | | | bool (*)(const ddsi_sertype*, const void*, void*, std::size_t) {aka bool (*)(const ddsi_sertype*, const void*, void*, long unsigned int)}

Splinter1984 and others added 6 commits August 12, 2025 10:48
Needs cyclonedds later than 0.10.
Cyclone doesn't do WStrings, ROS2 does and so those we can't translate.

Signed-off-by: Erik Boasson <[email protected]>
Signed-off-by: Erik Boasson <[email protected]>
@jpace121
Copy link

If I was interested in helping push this along would that be a thing? There seems to be a few interesting configuration parameters exposed in 0.10 that may help with an issue I’m currently debugging.

@eboasson
Copy link
Collaborator Author

eboasson commented Jan 6, 2026

Closing: superseded by #550

@eboasson eboasson closed this Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Extremely big latency when enabling shared memory

4 participants