rmw_cyclonedds/rmw_cyclonedds_cpp/src
eboasson 0ca71446a9 Address "Precondition not met" on rmw_create_node (#65) (#66)
Cyclone's original code for dds_create_domain() appears to create a
domain entity that is automatically deleted when the last attached
participant disappears.  In reality, it leaks a reference while
returning DDS_RETCODE_OK, making it appear as-if it is a regular entity
that remains into existence until explicitly deleted.

The RMW code assumed that it would be automatically deleted when the
last node was destroyed and that a subsequent call to rmw_create_node
could create the domain anew.  This then fails with "precondition not
met".

In an upcoming fixed version of dds_create_domain() the domain entities
will behave normally (return a handle, require an explicit delete).

This commit provides a workaround for the bug in the original
implementation: by recovering the handle from the first participant the
preceding commits that were intended to future-proof the code will
ensure that the entity now gets deleted explicitly.

Signed-off-by: Erik Boasson <eb@ilities.com>
2019-11-11 15:28:53 -05:00
..
deserialization_exception.cpp remove executive flags from source code files 2019-10-25 10:15:48 +02:00
exception.cpp remove executive flags from source code files 2019-10-25 10:15:48 +02:00
graphrhc.cpp Multi-domain support 2019-09-11 10:00:46 +02:00
namespace_prefix.cpp initial commit 2018-07-09 13:22:25 +02:00
namespace_prefix.hpp initial commit 2018-07-09 13:22:25 +02:00
rmw_cyclonedds_topic.idl initial commit 2018-07-09 13:22:25 +02:00
rmw_node.cpp Address "Precondition not met" on rmw_create_node (#65) (#66) 2019-11-11 15:28:53 -05:00
serdata.cpp remove executive flags from source code files 2019-10-25 10:15:48 +02:00
serdes.cpp remove executive flags from source code files 2019-10-25 10:15:48 +02:00
u16string.cpp Add wstring support 2019-08-19 11:13:13 +02:00