50.4.6 Transport Properties

You can configure transport plugins using the DomainParticipant’s 47.19 PROPERTY QosPolicy (DDS Extension) .

This example configures the builtin UDPv4 transport using the <transport_builtin> tags:

<domain_participant_qos>
    <transport_builtin>
        <udpv4>
            <message_size_max>1024</message_size_max>
        </udpv4>
    </transport_builtin>
</domain_participant_qos>

You can do the same thing with the UDPv6 (<udpv6>) and SHMEM (<shmem>) transports (and, if RTI Real-Time WAN Transport is installed, with UDPv4_WAN (<udp4_wan>)). For example:

<domain_participant_qos>
    <transport_builtin>
        <udpv6>
            <message_size_max>1024</message_size_max>
        </udpv6>
    </transport_builtin>
</domain_participant_qos>

You cannot use the <transport_builtin> tag for the other transport plugins, like TCP, DTLS, WAN, LBRTPS, and ZRTPS. (You must use the 47.19 PROPERTY QosPolicy (DDS Extension) properties for those.)

The following example configures the builtin UDPv4 transport using the legacy approach, via regular XML tags; you can find the names of these 47.19 PROPERTY QosPolicy (DDS Extension) properties in the Property Reference Guide:

<domain_participant_qos>
    <property>
       <value>
           <element>
               <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
               <value>65507</value>
           </element>
           <element>
               <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
               <value>131072</value>
           </element>
           <element>
               <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
               <value>131072</value>
           </element>
       </value>
    </property>
</domain_participant_qos>

Some of the properties in the Property Reference Guide are described as "promoted" to <transport_builtin> tag usage. For example, dds.transport.UDPv4.builtin.send_socket_buffer_size can be entered either in a <name> element as shown above or via the <transport_builtin> tag as shown here:

<domain_participant_qos>
    <transport_builtin>
        <udpv4>
            <send_socket_buffer_size>131072</send_socket_buffer_size>
        </udpv4>
    </transport_builtin>
</domain_participant_qos>

All of the UDPv4, UDPv4_WAN (if installed), UDPv6, and SHMEM transport properties (except those that are private or deprecated) have been "promoted" for use in a <transport_builtin> tag, if desired; however, the legacy way of using the 47.19 PROPERTY QosPolicy (DDS Extension) properties (as described in the Property Reference Guide) is still supported. The <transport_builtin> tag is simply an easier way to configure your transports when using XML, for those properties that support it.

Note that programmatically, you must use the properties. For example:

retCode = DDS_PropertyQosPolicyHelper_add_property(
            &participantQos.property,
            "dds.transport.UDPv4.builtin.parent.message_size_max",
            "5000",
            DDS_BOOLEAN_FALSE);

If you happen to set a transport property both ways—via the PROPERTY QoS <name> and via the <transport_builtin> tag—the <transport_builtin> method takes precedence. For example:

<qos_profile name="Precedence_Test_Tag_Properties">
    <participant_qos>
        <transport_builtin>
            <mask>SHMEM</mask>
            <shmem>
                <address_bit_count>0</address_bit_count>
            </shmem>
        </transport_builtin>
        <property>
            <value>
                <!-- SHMEM -->
                <element>
                    <name>dds.transport.shmem.builtin.parent.address_bit_count</name>
                    <value>1111</value>
                    <propagate>true</propagate>
                </element>
            </value>
        </property>
    </participant_qos>
</qos_profile>

In this example, the address_bit_count will be 0.

Deprecated or private properties have no XML QoS representation via the <transport_builtin> tag. For example, dds.transport.UDPv4.builtin.ignore_nonup_interfaces, although it is a UDPv4 transport plugin property, cannot be specified via the <transport_builtin> tag, because it has been deprecated.