Enabling Intra-Process communication only

5 posts / 0 new
Last post
Offline
Last seen: 2 years 2 months ago
Joined: 03/03/2015
Posts: 19
Enabling Intra-Process communication only

Hello,

I am posting a new topic since I haven't really found another topic on this matter :(.

I am trying to configure my DDS application to only run intra-process. This means that if I start 2 instances of the same program, my DDS_DataWriters from one instance should not discover DDS_DataReaders from the other instance of the application. 

I read on the RTI blog some information about the INTRA built-in transport, but I don't seem to set it as my default transport. What I've tried to do was setting the transport_builtin.mask of the DDSDomainParticipantQos to DDS_TRANSPORTBUILTIN_INTRA, as follows

participant_qos.transport_builtin.mask = DDS_TRANSPORTBUILTIN_INTRA;

This line executes fine but when I tried to create the DDSDomainParticipant based on this qos configuration, I get the following errors: 

[D0000|ENABLE]DDS_DomainParticipantConfigurator_setup_builtin_transports:!install transport plugin aliases = *. Failed to create builtin transports.
[D0000|ENABLE]DDS_DomainParticipantConfigurator_enable:!install transport plugin aliases = builtin transports
[D0000|ENABLE]DDS_DomainParticipant_enableI:!enable transport configurator
DDSDomainParticipant_impl::createI:ERROR: Failed to auto-enable entity

Do I need to install any plugin? Or should the configuration be made in another way?

 

Thank you very much!

Best Regards,

Andrei

Organization:
Offline
Last seen: 2 months 3 weeks ago
Joined: 05/23/2013
Posts: 49

Hi Andrei,

Can you point me where you found about the INTRA built-in transport? I found that it is supported in Connext Micro, but I am not sure this fits your use case. 

https://community.rti.com/static/documentation/connext-micro/2.4.6/doc/html/group__UserManuals__INTRATranport.html

Do you create your DataWriter and DataReader in the same participant? If so, please check out ignore_participant (). 

https://community.rti.com/kb/how-do-i-get-datareader-ignore-datawriter-belongs-same-domainparticipant

Offline
Last seen: 2 years 2 months ago
Joined: 03/03/2015
Posts: 19

Hey,

I'm using DDS Professional, not Micro.

The use case I am trying to solve is the following:

- Create a DDS_DataWriter on a DDS_Participant and a DDS_DataReader on another DDS_Participant but within the same application process. This should enable the data writer to communicate with the data reader and it would be completely fine.

- Start 2 application instances (2 sepparate processes of the same application). The thing is that I don't want the data writer from an application instance to communicate with the data reader from the other aplication instance(just with the data reader from the same application instance). If the transport is set to UDP of Shared Memory, they will communicate. That's how I found the "Intra Process" transport documentation and I believe that is what I want. To somehow enable intra-process communication between multiple dds participant sfrom with the same application process, and restrict the communication between multiple application processes.

 

I attached an image mock-up to visually demonstrate what I want to do.

Note: The dds data readers and the dds data writers should be created from topics with the same name

 

Thank you,

Best regards,

Andrei

File Attachments: 
Offline
Last seen: 2 months 3 weeks ago
Joined: 05/23/2013
Posts: 49

Hi Andrei,

Thanks for providing the details of your use case. I understand why you looked into INTRA transport.I cannot think of a way off the top of my head without INTRA transport. If your use case is only concerned about user data traffic, you could take a look at Partition QoS. With Partition QoS, processes will exchange discovery data, but user data wouldn't be exchanged between the processes. 

https://community.rti.com/static/documentation/connext-dds/5.2.3/doc/manuals/connext_dds/html_files/RTI_ConnextDDS_CoreLibraries_UsersManual/Content/UsersManual/PARTITION_QosPolicy.htm

Offline
Last seen: 2 years 2 months ago
Joined: 03/03/2015
Posts: 19

Hey Kyoungho,

My first choice would be the INTRA transport (if I have a way to enable it). Partitions may also be a good solution. Thank you for your answer :)