diff --git a/code/DDSCodeTester.cpp b/code/DDSCodeTester.cpp index f8411efee..32894cbdf 100644 --- a/code/DDSCodeTester.cpp +++ b/code/DDSCodeTester.cpp @@ -6152,6 +6152,26 @@ void tcp_use_cases() //! } + { + //LARGE_DATA_BUILTIN_TRANSPORTS_OPTIONS + eprosima::fastdds::dds::DomainParticipantQos pqos = PARTICIPANT_QOS_DEFAULT; + + /* Transports configuration */ + // UDPv4 transport for PDP over multicast and SHM / TCPv4 transport for EDP and application data + // Message Size and Sockets sizes of 200 KB + Non-blocking send + 50ms negotiation timeout + eprosima::fastdds::rtps::BuiltinTransportsOptions large_data_options; + large_data_options.maxMessageSize = 200000; + large_data_options.sockets_buffer_size = 200000; + large_data_options.non_blocking_send = true; + large_data_options.tcp_negotiation_timeout = 50; + pqos.setup_transports(eprosima::fastdds::rtps::BuiltinTransports::LARGE_DATA, large_data_options); + + /* Create participant as usual */ + eprosima::fastdds::dds::DomainParticipant* participant = + eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->create_participant(0, pqos); + //! + } + { //PDP-MULTICAST-DATA-TCP eprosima::fastdds::dds::DomainParticipantQos pqos = PARTICIPANT_QOS_DEFAULT; diff --git a/code/XMLTester.xml b/code/XMLTester.xml index 296b8e670..b55d85795 100644 --- a/code/XMLTester.xml +++ b/code/XMLTester.xml @@ -3905,6 +3905,23 @@ --> <--> +LARGE_DATA_BUILTIN_TRANSPORTS_OPTIONS<--> + + + + LARGE_DATA + + + +<--> + PDP-MULTICAST-DATA-TCP<--> LARGE_DATA_BUILTIN_TRANSPORTS_OPTIONS<--> + :end-before: <--> + :lines: 2-4, 6-10, 12-13 + + .. tab:: C++ + + .. literalinclude:: ../../../../code/DDSCodeTester.cpp + :language: c++ + :dedent: 8 + :start-after: //LARGE_DATA_BUILTIN_TRANSPORTS_OPTIONS + :end-before: //! + +.. note:: + + To learn how to check and modify the default maximum system value for the socket buffers size, please refer to + :ref:`finding-out-maximum-socket-values`. + +.. warning:: + + Setting a ``max_msg_size`` value higher than 65500 KB with the ``DEFAULT`` or ``UDP`` modes will result in an error + and the participant creation will fail. + diff --git a/docs/fastdds/use_cases/tcp/tcp_use_case.rst b/docs/fastdds/use_cases/tcp/tcp_use_case.rst index 67884e061..3a150f00b 100644 --- a/docs/fastdds/use_cases/tcp/tcp_use_case.rst +++ b/docs/fastdds/use_cases/tcp/tcp_use_case.rst @@ -24,6 +24,8 @@ when the deployment changes over time. networks. When configured, UDP transport will exclusively be used during the :ref:`PDP discovery` phase, taking advantage of the more reliable TCP/SHM for the remainder of the communication process. Fast DDS offers an extremely straightforward implementation for this mode through an environment variable, XML profiles or via code. +Additionally, it is possible to use the builtin transports configuration options to customize the ``LARGE_DATA`` mode +to better suit the specific requirements of each user. For a video demonstration showcasing a practical example of this configuration, please refer to: `Large Data communication with ROS 2 @@ -36,4 +38,5 @@ Also, it is possible to enable TCP communication while using :maxdepth: 2 /fastdds/use_cases/tcp/tcp_with_multicast_discovery.rst + /fastdds/use_cases/tcp/tcp_large_data_with_options.rst /fastdds/use_cases/tcp/tcp_with_discovery_server.rst diff --git a/docs/fastdds/xml_configuration/common.rst b/docs/fastdds/xml_configuration/common.rst index f2aaf4f92..4a398ca9b 100644 --- a/docs/fastdds/xml_configuration/common.rst +++ b/docs/fastdds/xml_configuration/common.rst @@ -20,6 +20,7 @@ This section aims to explain these common elements. - :ref:`rLsQos` * :ref:`ThreadSettingsType` +* :ref:`BuiltinTransportType` * :ref:`CommonQOS` @@ -351,6 +352,62 @@ Please refer to :ref:`threadsettingsqos` for further information on ResourceLimi - ``int32_t`` - -1 +.. _BuiltinTransportType: + +BuiltinTransports +^^^^^^^^^^^^^^^^^ + +It controls the builtin transports that will be used during the initialization of the DomainParticipant. +Please refer to :ref:`rtps_layer_builtin_transports` for further information on builtin transports. + +This type must follow this configuration: + +.. list-table:: + :header-rows: 1 + + * - Name + - Description + - Values + - Default + * - ```` + - Defines the builtin transport mode. + - ``NONE`` |br| ``DEFAULT`` |br| ``DEFAULTv6`` |br| ``SHM`` |br| ``UDPv4`` |br| ``UDPv6`` + |br| ``LARGE_DATA`` + - ``DEFAULT`` + +The ```` tag can be configured with the following attributes: + +.. list-table:: + :header-rows: 1 + :align: left + + * - Name + - Description + - Values + - Default + * - ``max_msg_size`` + - Maximum message size that will be specified in + the transport layer. |br| + Valid values: from 1 to (2^32)-1. + - ``uint32_t`` + - 65500 + * - ``sockets_size`` + - Size of the send and receive socket buffers. + Valid values: from 0 to (2^32)-1. + - ``uint32_t`` + - OS default + * - ``non_blocking`` + - Whether to use non-blocking send calls or not. + Valid values: ``true`` or ``false``. + - ``bool`` + - ``false`` + * - ``tcp_negotiation_timeout`` + - Timeout duration for logical port negotiation. + Valid values: from 1 to (2^32)-1. |br| + Only valid for ``LARGE_DATA`` mode. + - ``uint32_t`` + - 0 + .. _CommonQOS: QoS diff --git a/docs/fastdds/xml_configuration/domainparticipant.rst b/docs/fastdds/xml_configuration/domainparticipant.rst index a6d13b61d..a34791ab1 100644 --- a/docs/fastdds/xml_configuration/domainparticipant.rst +++ b/docs/fastdds/xml_configuration/domainparticipant.rst @@ -66,6 +66,7 @@ These elements allow the user to define the DomainParticipant configuration. .. |PartAlloc| replace:: :ref:`DomainParticipantAllocationType ` .. |PolicyType| replace:: :ref:`PropertiesPolicyType ` +.. |BuiltinTransportType| replace:: :ref:`BuiltinTransportType ` .. list-table:: @@ -156,8 +157,8 @@ These elements allow the user to define the DomainParticipant configuration. - Configuration option to determine which transports |br| will be instantiated if the ``useBuiltinTransports`` is |br| set to true. See :ref:`rtps_layer_builtin_transports`. - - ``string_255`` - - DEFAULT + - |BuiltinTransportType| + - * - ```` - Additional configuration properties. |br| See :ref:`propertypolicyqos`. diff --git a/docs/spelling_wordlist.txt b/docs/spelling_wordlist.txt index c8100c899..ecc192d8a 100644 --- a/docs/spelling_wordlist.txt +++ b/docs/spelling_wordlist.txt @@ -117,6 +117,7 @@ GCC GCM getter getters +gibibyte github Github GMAC @@ -146,6 +147,7 @@ IPv json kB keyhash +kibibyte latencies le Libp @@ -161,6 +163,7 @@ LTS macOS mandatorily md +mebibyte metatraffic middleware misconfigurations