RTI Connext DDS XML Output Utility
A command line utility to output final XML values provided by a QoS Profile for RTI Connext DDS Professional.
Purpose
In RTI Connext DDS Professional, an application can be configured using an XML QoS (Quality of Service) configuration file. Since v6.0.0, XML multiple inheritance (also known as QoS Profile Composition) allows an XML configuration to be composed from multiple QoS Profiles. This enhancement allows greater reusability and flexibility, but you might want to see what your final values are after the composition occurs. This tool helps with that.
This tool allows you to see what the final values (after resolution of inheritance) for XML QoS will be when an entity is created, by pointing at a <qos_profile>
. The utility also allows you to see the value of a subtag within one of the standard <xxx_qos>
tags by using the '/' separator.
Compiling
The tool has the following dependencies
- RTI Connext DDS Pro v6.1.0 or higher
- CMake v3.7.2 or higher
Here is how you would compile this utility after cloning it:
Create a build subdirectory and cd into it:
mkdir build
cd build
Create the toolchain file to compile for your platform:
cmake ..
-DCONNEXTDDS_DIR=<RTI Connext DDS installation folder>
-DCONNEXTDDS_ARCH=<RTI Connext DDS target architecture installed> (optional)
-DCMAKE_BUILD_TYPE=Release|Debug
Compile:
cmake --build .
Note: If you are using a multi-configuration generator, such as Visual Studio Solutions, you can specify the configuration mode to build as follows:
cmake --build . --config Release|Debug
Here is more information about generating Visual Studio Solutions for Windows using CMake.
Executables
To ensure easy usage of the utility we have made available prepackaged binaries for Windows, macOS and Linux. You can find them under the releases section. These binaries have no external dependencies and can be directly used.
Usage
Here are the various options for this utility
Option | Explanation | Type |
---|---|---|
qosFile | Absolute or relative path of the QoS XML configuration file you want to analyze. You can also specify multiple files by separating them with a semicolon ';' and surrounding them with single quotes. For example: 'file_path_1;file_path_2;file_path_3' |
OPTIONAL: The standard QoS XML files as defined in the User's manual will still be loaded |
outputFile | Filename where the utility will output the QoS XML values | OPTIONAL: If not specified the output will be to the console |
qosProfile | Fully qualified path of a QoS Profile. For example: QoSLibraryName::QoSProfileName | OPTIONAL: The <qos_profile> with is_default_qos="true" will be selected OR the default values will be returned for the -qosTag |
qosTag | XML tag name who QoS values you want to be fetched. You can also select a subtag by separating it with a '/'. For example: datawriter_qos/history or domain_participant_qos/property |
REQUIRED: Allowed values = {datawriter_qos, datareader_qos, topic_qos, domain_participant_qos (participant_qos is being deprecated), publisher_qos, subscriber_qos} |
topicName | Can be used with -qosTag = {datawriter_qos, datareader_qos, topic_qos} | OPTIONAL: The default value used with these types will be NULL |
help | Displays all the options of the rtixmloutpututility | OPTIONAL |
You should also add the the location of the lib
folder to your PATH (Windows) or DYLD_LIBRARY_PATH (Mac) or LD_LIBRARY_PATH (Linux) if you compiled the utility using -DBUILD_SHARED_LIBS=1
Linux
export LD_LIBRARY_PATH=<RTI Connext DDS installation folder>/lib/<architecture>:$LD_LIBRARY_PATH
macOS
export DYLD_LIBRARY_PATH=<RTI Connext DDS installation folder>/lib/<architecture>:$DYLD_LIBRARY_PATH
Windows
set PATH=<RTI Connext DDS installation folder>/lib/<architecture>;%PATH%
Example
Here is a sample usage of the utility on a Linux machine
$ ./rtixmloutpututility
-qosFile '/home/xxx/Documents/Tests/CORE-9446/USER_QOS_PROFILES.xml;/home/xxx/Documents/Tests/CORE-1375/USER_QOS_PROFILES.xml'
-qosProfile Data_Library::Data_Profile
-qosTag participant_qos/property
Here is the sample output for this command
The parsed arguments are:
-qosFile '/home/xxx/Documents/Tests/CORE-9446/USER_QOS_PROFILES.xml;/home/xxx/Documents/Tests/CORE-1375/USER_QOS_PROFILES.xml'
-outputFile ''
-qosProfile 'Data_Library'::'Data_Profile'
-qosTag 'participant_qos'/'property'
-topicName ''
QoS file names detected are:
1. file:///home/xxx/Documents/Tests/CORE-9446/USER_QOS_PROFILES.xml
2. file:///home/xxx/Documents/Tests/CORE-1375/USER_QOS_PROFILES.xml
<property>
<value>
<element>
<name>dds.sys_info.hostname</name>
<value>xxx-VirtualBox</value>
</element>
<element>
<name>dds.sys_info.process_id</name>
<value>5150</value>
</element>
<element>
<name>dds.sys_info.username</name>
<value>xxx</value>
</element>
<element>
<name>dds.sys_info.executable_filepath</name>
<value>/home/xxx/Documents/Tests/RTI_XMLOutputUtility/build/rtixmloutpututility</value>
</element>
<element>
<name>dds.sys_info.target</name>
<value>x64Linux3gcc5.4.0</value>
</element>
<element>
<name>dds.sys_info.creation_timestamp</name>
<value>2019-06-17 10:46:02Z</value>
</element>
<element>
<name>dds.sys_info.execution_timestamp</name>
<value>2019-06-24 11:49:29Z</value>
</element>
<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>
<element>
<name>dds.transport.UDPv6.builtin.parent.message_size_max</name>
<value>65507</value>
</element>
<element>
<name>dds.transport.UDPv6.builtin.send_socket_buffer_size</name>
<value>131072</value>
</element>
<element>
<name>dds.transport.UDPv6.builtin.recv_socket_buffer_size</name>
<value>131072</value>
</element>
<element>
<name>dds.transport.shmem.builtin.parent.message_size_max</name>
<value>65536</value>
</element>
<element>
<name>dds.transport.shmem.builtin.receive_buffer_size</name>
<value>1048576</value>
</element>
<element>
<name>dds.transport.shmem.builtin.received_message_count_max</name>
<value>64</value>
</element>
</value>
</property>
QoS Profile Inheritance and Composition Guidance
QoS Profile Inheritance and Composition Guidance is a best practice we recommend when organizing your XML QoS Profiles using the mechanisms of single and multiple inheritance. For more information please refer to this knowledge base article.