RTI Connext Modern C++ API Version 7.2.0
rti::core::policy::TransportMulticast Class Reference

<<extension>> Specifies the multicast address on which a dds::sub::DataReader wants to receive its data and other settings. More...

#include <rti/core/policy/CorePolicy.hpp>

Public Member Functions

 TransportMulticast ()
 Creates the default policy. More...
 
 TransportMulticast (const TransportMulticastSettingsSeq &the_value, TransportMulticastKind the_kind)
 Creates an instance with the speicfied multicast settings. More...
 
TransportMulticastsettings (const TransportMulticastSettingsSeq &the_settings)
 A sequence of multicast communications settings. More...
 
TransportMulticastSettingsSeq settings () const
 Getter (see setter with the same name) More...
 
TransportMulticastkind (TransportMulticastKind the_kind)
 A value that specifies a way to determine how to obtain the multicast address. More...
 
TransportMulticastKind kind () const
 Getter (see setter with the same name) More...
 

Detailed Description

<<extension>> Specifies the multicast address on which a dds::sub::DataReader wants to receive its data and other settings.

By default, a dds::pub::DataWriter will send individually addressed packets for each dds::sub::DataReader that subscribes to the topic of the DataWriter – this is known as unicast delivery. Thus, as many copies of the data will be sent over the network as there are DataReaders for the data. The network bandwidth used by a DataWriter will thus increase linearly with the number of DataReaders.

Multicast addressing (on UDP/IP transports) allows multiple DataReaders to receive the same network packet. By using multicast, a dds::pub::DataWriter can send a single network packet that is received by all subscribing applications. Thus the network bandwidth usage will be constant, independent of the number of DataReaders.

Coordinating the multicast address specified by DataReaders can help optimize network bandwidth usage in systems where there are multiple DataReaders for the same dds::topic::Topic.

Entity:
dds::sub::DataReader
Properties:
RxO = N/A
Changeable = NO

Constructor & Destructor Documentation

◆ TransportMulticast() [1/2]

rti::core::policy::TransportMulticast::TransportMulticast ( )
inline

Creates the default policy.

◆ TransportMulticast() [2/2]

rti::core::policy::TransportMulticast::TransportMulticast ( const TransportMulticastSettingsSeq the_value,
TransportMulticastKind  the_kind 
)

Creates an instance with the speicfied multicast settings.

See individual setters.

Member Function Documentation

◆ settings() [1/2]

TransportMulticast & rti::core::policy::TransportMulticast::settings ( const TransportMulticastSettingsSeq the_settings)

A sequence of multicast communications settings.

An empty sequence means that multicast is not used by the entity.

The RTPS wire protocol currently limits the maximum number of multicast locators to

  1. Note that this is a hard limit that cannot be increased. However, this limit can be decreased by configuring the 'dds.domain_participant.max_announced_locator_list_size' property in the rti::core::policy::Property associated with the dds::domain::qos::DomainParticipantQos.

[default] Empty sequence.

◆ settings() [2/2]

TransportMulticastSettingsSeq rti::core::policy::TransportMulticast::settings ( ) const

Getter (see setter with the same name)

◆ kind() [1/2]

TransportMulticast & rti::core::policy::TransportMulticast::kind ( TransportMulticastKind  the_kind)

A value that specifies a way to determine how to obtain the multicast address.

This field can be set to one of the following two values: rti::core::policy::TransportMulticastKind::AUTOMATIC_TRANSPORT or rti::core::policy::TransportMulticastKind::UNICAST_ONLY_TRANSPORT.

  • If it is set to rti::core::policy::TransportMulticastKind::AUTOMATIC_TRANSPORT, the behavior will depend on the rti::core::policy::TransportMulticast::value:
    • If rti::core::policy::TransportMulticast::value does not have any elements, then multicast will not be used.

    • If rti::core::policy::TransportMulticast::value first element has an empty address, then the address will be obtained from rti::core::policy::TransportMulticastMapping.

    • If none of the elements in rti::core::policy::TransportMulticast::value is empty, and at least one element has a valid address, then that address will be used.
  • If it is set to rti::core::policy::TransportMulticastKind::UNICAST_ONLY_TRANSPORT, then multicast will not be used.

[default] rti::core::policy::TransportMulticastKind::AUTOMATIC_TRANSPORT

◆ kind() [2/2]

TransportMulticastKind rti::core::policy::TransportMulticast::kind ( ) const

Getter (see setter with the same name)