If you create and register a transport plugin with a DomainParticipant, you are responsible for deleting it by calling its destructor. Builtin transport plugins are automatically managed by Connext DDS if they are implicitly registered through the TransportBuiltinQosPolicy.
User-created transport plugins must not be deleted while they are is still in use by a DomainParticipant. This generally means that a user-created transport plugin instance can only be deleted after the DomainParticipant with which it was registered is deleted. Note that a transport plugin cannot be "unregistered" from a DomainParticipant.
A transport plugin instance cannot be registered with more than one DomainParticipant at a time. This requirement is necessary to guarantee the multi-threaded safety of the transport API.
Thus, if the same physical transport resources are to be used with multiple DomainParticipants in the same address space, the transport plugin should be written in such a way so that it can be instantiated multiple times—once for each DomainParticipant in the address space. Note that it is always possible to write the transport plugin so that multiple transport plugin instances share the same underlying resources; however the burden (if any) of guaranteeing multi-threaded safety to access shared resource shifts to the transport plugin developer.
© 2018 RTI