RTI Connext Modern C++ API Version 7.2.0
NDDS_Transport_Shmem_Property_t Struct Reference

Subclass of NDDS_Transport_Property_t allowing specification of parameters that are specific to the shared-memory transport. More...

Public Attributes

struct NDDS_Transport_Property_t parent
 Generic properties of all transport plugins. More...
 
RTI_INT32 received_message_count_max
 Number of messages that can be buffered in the receive queue. More...
 
RTI_INT32 receive_buffer_size
 The total number of bytes that can be buffered in the receive queue. More...
 
RTIBool enable_udp_debugging
 Enables UDP debugging when using shared memory. More...
 
NDDS_Transport_Address_t udp_debugging_address
 IP address to which shared memory traffic will be published if ShmemTransport_Property_t::enable_udp_debugging is set to '1'. More...
 
NDDS_Transport_Port_t udp_debugging_port
 Port to which shared memory traffic will be published if ShmemTransport_Property_t::enable_udp_debugging is set to '1'. More...
 

Detailed Description

Subclass of NDDS_Transport_Property_t allowing specification of parameters that are specific to the shared-memory transport.

See also
Transport_Support::set_builtin_transport_property()

Member Data Documentation

◆ parent

struct NDDS_Transport_Property_t NDDS_Transport_Shmem_Property_t::parent

Generic properties of all transport plugins.

◆ received_message_count_max

RTI_INT32 NDDS_Transport_Shmem_Property_t::received_message_count_max

Number of messages that can be buffered in the receive queue.

This does not guarantee that the Transport-Plugin will actually be able to buffer received_message_count_max messages of the maximum size set in NDDS_Transport_Property_t::message_size_max. The total number of bytes that can be buffered for a transport plug-in is actually controlled by receive_buffer_size.

See also
NDDS_Transport_Property_t, NDDS_TRANSPORT_SHMEM_RECEIVED_MESSAGE_COUNT_MAX_DEFAULT

◆ receive_buffer_size

RTI_INT32 NDDS_Transport_Shmem_Property_t::receive_buffer_size

The total number of bytes that can be buffered in the receive queue.

This number controls how much memory is allocated by the plugin for the receive queue. The actual number of bytes allocated is:

size = receive_buffer_size + message_size_max +
received_message_count_max * fixedOverhead
RTI_INT32 received_message_count_max
Number of messages that can be buffered in the receive queue.
Definition: shmem.ifc:98
RTI_INT32 receive_buffer_size
The total number of bytes that can be buffered in the receive queue.
Definition: shmem.ifc:102

where fixedOverhead is some small number of bytes used by the queue data structure. The following rules are noted:

  • receive_buffer_size < message_size_max * received_message_count_max, then the transport plugin will not be able to store received_message_count_max messages of size message_size_max.
  • receive_buffer_size > message_size_max * received_message_count_max, then there will be memory allocated that cannot be used by the plugin and thus wasted.

To optimize memory usage, the user is allowed to specify a size for the receive queue to be less than that required to hold the maximum number of messages which are all of the maximum size.

In most situations, the average message size may be far less than the maximum message size. So for example, if the maximum message size is 64 K bytes, and the user configures the plugin to buffer at least 10 messages, then 640 K bytes of memory would be needed if all messages were 64 K bytes. Should this be desired, then receive_buffer_size should be set to 640 K bytes.

However, if the average message size is only 10 K bytes, then the user could set the receive_buffer_size to 100 K bytes. This allows the user to optimize the memory usage of the plugin for the average case and yet allow the plugin to handle the extreme case.

NOTE, the queue will always be able to hold 1 message of message_size_max bytes, no matter what the value of receive_buffer_size is.

See also
NDDS_TRANSPORT_SHMEM_RECEIVE_BUFFER_SIZE_DEFAULT

◆ enable_udp_debugging

RTIBool NDDS_Transport_Shmem_Property_t::enable_udp_debugging

Enables UDP debugging when using shared memory.

If set to '1', all shared memory traffic will be published to ShmemTransport_Property_t::udp_debugging_address :: ShmemTransport_Property_t::udp_debugging_port.

[default] 0

◆ udp_debugging_address

NDDS_Transport_Address_t NDDS_Transport_Shmem_Property_t::udp_debugging_address

IP address to which shared memory traffic will be published if ShmemTransport_Property_t::enable_udp_debugging is set to '1'.

[default] 239.255.1.2

◆ udp_debugging_port

NDDS_Transport_Port_t NDDS_Transport_Shmem_Property_t::udp_debugging_port

Port to which shared memory traffic will be published if ShmemTransport_Property_t::enable_udp_debugging is set to '1'.

[default] 7399