#include <managed_transport.h>
This plugin uses System Shared Memory to send messages between processes on the same node.
The transport plugin has exactly one "receive interface"; since the address_bit_count
is 0, it can be assigned any address. Thus the interface is located by the "network address" associated with the transport plugin.
When a sender tries to send to the shared memory port, it verifies that properties of the receiver's shared memory transport are compatible with those specified in its transport plugin. If not, the sender will fail to attach to the port and will output messages such as below (with numbers appropriate to the properties of the transport plugins involved).
NDDS_Transport_Shmem_attachShmem:failed to initialize incompatible properties NDDS_Transport_Shmem_attachShmem:countMax 0 > -19417345 or max size -19416188 > 2147482624
The reuse is allowed iff the properties of transport plugin are compatible with those embedded in the shared memory segment (i.e., of the original creator). Otherwise, the process will fail to open the ports, and will output messages such as below (with numbers appropriate to the properties of the transport plugins involved).
NDDS_Transport_Shmem_create_recvresource_rrEA:failed to initialize shared memory resource Cannot recycle existing shmem: size not compatible for key 0x1234
0x400000 + port
0x800000 + port
0xb00000 + port
port
is a function of the domain_id
and the participant_id
, as described in DDS::WireProtocolQosPolicy::participant_id
DDS::Transport_Support::set_builtin_transport_property()
To specify the properties of the builtin shared memory transport that is implicitly registered, you can either:
Note that all properties should be set before the transport is implicitly created and registered by RTI Data Distribution Service. See Built-in Transport Plugins for details on when a builtin transport is registered.
Name | Descriptions
|
---|---|
dds.transport.shmem.builtin.parent.address_bit_count | See DDS::Transport_Property_t::address_bit_count |
dds.transport.shmem.builtin.parent.properties_bitmap | See DDS::Transport_Property_t::properties_bitmap |
dds.transport.shmem.builtin.parent.gather_send_buffer_count_max | See DDS::Transport_Property_t::gather_send_buffer_count_max |
dds.transport.shmem.builtin.parent.message_size_max | See DDS::Transport_Property_t::message_size_max |
dds.transport.shmem.builtin.parent.allow_interfaces | See DDS::Transport_Property_t::allow_interfaces_list and DDS::Transport_Property_t::allow_interfaces_list_length. Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0 |
dds.transport.shmem.builtin.parent.deny_interfaces | See DDS::Transport_Property_t::deny_interfaces_list and DDS::Transport_Property_t::deny_interfaces_list_length. Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0 |
dds.transport.shmem.builtin.parent.allow_multicast_interfaces | See DDS::Transport_Property_t::allow_multicast_interfaces_list and DDS::Transport_Property_t::allow_multicast_interfaces_list_length. Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0 |
dds.transport.shmem.builtin.parent.deny_multicast_interfaces | See DDS::Transport_Property_t::deny_multicast_interfaces_list and DDS::Transport_Property_t::deny_multicast_interfaces_list_length. Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0 |
dds.transport.shmem.builtin.received_message_count_max | See DDS::ShmemTransport_Property_t::received_message_count_max |
dds.transport.shmem.builtin.receive_buffer_size | See DDS::ShmemTransport_Property_t::receive_buffer_size
|