.. include:: vars.rst
.. _section-configuration:
Configuration
*************
Configuring |RS_HEADING|
===================================
This document describes how to configure |RS|. For installation instructions
or to walk through some simple examples, please see the appropriate section.
When you start |RS|, you can specify a configuration file in XML format. In
that file, you can set properties that control the behavior of the service.
This chapter describes how to write a configuration file.
Terms to Know
=============
Before learning how to configure |RS|, you should become familiar with a few
key terms and concepts:
* A |SERVICE| entity refers to an execution of |RS|.
* A |DOMAINROUTE| defines a two-way mapping between two data domains
(DDS, MQTT, AMQP, etc.).
* A |SESSION| defines a safe, threaded context for |ROUTEs|. A |ROUTE| can be
processed by a single thread a time. If the session defines a thread pool,
|ROUTEs| can be processed concurrently.
* A |ROUTE| defines a mapping between *input streams* and *output streams*
belonging to any of the data domains defined in a |DOMAINROUTE|. For example,
in a |ROUTE| between DDS and MQTT, the input streams will be DDS topics and
the output streams will be MQTT subscriptions.
* An |AR| defines a set of potential |ROUTEs| that can be instantiated based on
deny/allow filters on the stream name and registered type name.
* A |TRANSF| is a pluggable component that changes data from an input stream
to an output stream.
* An |ADAPTER| is a pluggable component that allows |RS| to consume and produce
data for different data domains. By default, |RS| is distributed with a
builtin DDS adapter.
.. _section-how-to-load-the-xml-configuration:
How to Load the XML Configuration
=================================
|RS| loads its XML configuration from multiple locations. This section
presents the various sources of configuration files, listed in load order.
- ``[working directory]/USER_ROUTING_SERVICE.xml``
This file is loaded automatically if it exists.
- ``[NDDSHOME]/resource/xml/RTI_ROUTING_SERVICE.xml``
This file is loaded automatically if it exists.
- File specified using the command-line parameter ``-cfgFile``.
.. note::
``[working directory]`` indicates the path to the current working
directory from which you run |RS|.
The tag ``[NDDSHOME]`` indicates the path to your |CONNEXT| installation.
You may use a combination of the above sources and load multiple configuration
files.
Here is an example configuration file. You will learn the meaning of each
line as you read the rest of this section.
.. code-block:: xml
01
ShapeType
Square
.. _section-xml-syntax-and-validation:
XML Syntax and Validation
=========================
The XML representation of DDS-related resources must follow these syntax rules:
- It shall be a well-formed XML document according to the criteria defined in
clause 2.1 of :link_xml_spec:`the Extensible Markup Language standard <>`.
- It shall use UTF-8 character encoding for XML elements and values.
- It shall use as the root tag of every document.
To validate the loaded configuration, |RS| relies on an XSD file that
describes the format of the XML content. We recommend including a reference to
this document in the XML file that contains the service's configuration; this
provides helpful features in code editors such as Visual Studio®, Eclipse®, and
NetBeans®, including validation and auto-completion while you are editing the
XML file.
The XSD definitions of the XML elements are in
``[NDDSHOME]/resources/schema/rti_routing_service.xsd``.
To include a reference to the XSD document in your XML file, use the attribute
``xsi:noNamespaceSchemaLocation`` in the ```` tag. For example:
.. code-block:: xml
.. note::
The tag ``[NDDSHOME]`` indicates the path to your *Connext DDS* installation.
.. _section-xml-tags-for-configuring-routing-service:
XML Tags for Configuring |project|
==================================
This section describes the XML tags you can use in a |RS| configuration file.
The following diagram and :numref:`TableTopLevelTag` describe the top-level
tags allowed within the root ```` tag.
.. figure:: static/TopLevelRoutingServiceConfig.png
:alt: Top-Level Tags in the Configuration File
:name: FigureTopLevelTag
:align: center
:width: 300px
Top-level Tags in the Configuration File
.. list-table:: Top-Level Tags in the Configuration File
:name: TableTopLevelTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Specifies a QoS library and profiles. |br|
The contents of this tag are specified in the same manner as for a
|CONNEXT| application. |br|
See :link_configuring_qos_xml:`Configuring QoS with XML, in the Connext
DDS Core Libraries User's Manual <>`.
- 0..*
* - :litrep:``
- Defines types that can be used by |RS|. |br|
See :numref:`section-Config-RouteTypes`.
- 0..1
* - :litrep:``
- Specifies a library of |RS| plugins. |br|
Available plug-ins are *Adapters*, *Transformations* and *Processors*.
See :numref:`section-Config-Plugins`.
- 0..*
* - :litrep:``
- Specifies a |RS| configuration. |br|
See :numref:`section-config-routing-service`.
Attributes
- ``name``: Uniquely identifies a |RS| configuration. Optional.
- ``enabled``: A boolean that indicates whether this entity is
auto-enabled when the service starts. If set to false, the entity
can be enabled after the service starts through remote administration.
Optional. |br|
Default: true.
- ``group_name``: A name that can be used to implement a specific
policy when the communication happens between |RS| of the same
group.
For example, in the builtin DDS adapter, a |DP| will
ignore other |DPs| in the same group, as a way to avoid circular
communication. Optional. |br|
Default:
RTI_RoutingService\ _\ ``[Host Name]``\ _ \ ``[Process ID]``\ |br|
Example
.. code-block:: xml
- 1..*
.. _section-config-routing-service:
Routing Service Tag
-------------------
A configuration file must have at least one |SERVICE_TAG| tag. This
tag is used to configure an execution of |RS|. A configuration file may
contain multiple |SERVICE_TAG| tags.
When you start |RS|, you can specify which |SERVICE_TAG| tag
to use to configure the service using the ``-cfgName`` command-line parameter.
Because a configuration file may contain multiple |SERVICE_TAG|
tags, one file can be used to configure multiple |RS| executions.
:numref:`FigureRoutingServiceTag` and
:numref:`TableRoutingServiceTag` describes the tags allowed within a
|SERVICE_TAG| tag.
.. figure:: static/RoutingServiceTagStructure.png
:alt: |RS| Tag
:name: FigureRoutingServiceTag
:align: center
:width: 300px
|RS| Tag Structure
.. list-table:: |RS| Tag
:name: TableRoutingServiceTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Contains a tag that can be used to provide a
configuration description.
- 0..1
* - :litrep:``
- Enables and configures remote administration. |br|
See :numref:`section-config-administration` and
:numref:`section-Admin`.
- 0..1
* - :litrep:``
- Enables and configures general remote monitoring. |br|
General monitoring settings are applicable to all the |RS| entities
unless they are explicitly overridden. |br|
See :numref:`section-config-monitoring` and :numref:`section-monitoring`.
- 0..1
* - :litrep:``
- Enables and configures remote monitoring for the service entity. |br|
See :numref:`section-config-monitoring-inheritance` and
:numref:`section-monitoring`.
- 0..1
* - :litrep:``
- Configures the Java JVM used to load and run Java adapters.
For example: |br|
Example
.. code-block:: xml
SocketAdapter.jar-Xms32m-Xmx128m
You can use the ```` tag to specify options for the JVM, such
as the initial and maximum Java heap sizes.
- 0..1
* - :litrep:``
- Defines a mapping between two or more data domains. |br|
See :numref:`section-config-DomainRoute`.
Attributes
- ``name``: uniquely identifies a |DR| configuration. Optional.
- ``enabled``: A boolean that indicates whether this entity is
auto-enabled when the service starts. If set to false, the entity
can be enabled after the service starts through remote administration.
Optional. |br|
Default: true.
- 0..1
Example: Specifying a configuration in XML
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: xml
Starting |RS| with the following command will use the
|SERVICE_TAG| tag with the name ``EmptyConfiguration``.
.. code-block:: bash
$NDDSHOME/bin/rtiroutingservice \
-cfgFile file.xml -cfgName EmptyConfiguration
.. _section-config-administration:
Administration
--------------
You can create a |CONNEXT| application that can remotely control |RS|. The
```` tag is used to enable remote administration and configure
its behavior. By default, remote administration is turned off in |RS| for
security reasons. A remote administration section is not required in the
configuration file.
When remote administration is enabled, |RS| will create a |DP|, |PUB|, |SUB|,
|DW|, and |DR|. These entities are used to receive commands and send responses.
You can configure these entities with QoS tags within the ````
tag. The following table lists the tags allowed within
```` tag. Notice that the ```` tag is required.
For more details, please see :numref:`section-Admin`.
.. note::
The command-line options used to configure remote administration take
precedence over the XML configuration (see :numref:`section-usage`).
.. list-table:: Administration Tag
:name: TableAdministrationTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Enables/disables administration. |br|
**Default:** true
- 0..1
* - :litrep:``
- Specifies which domain ID |RS| will use to enable remote
administration. |br|
- 0..1
* - :litrep:``
- Configures the |DP| QoS for remote administration. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults.
- 0..1
* - :litrep:``
- Configures the |PUB| QoS for remote administration. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults.
- 0..1
* - :litrep:``
- Configures the |SUB| QoS for remote administration. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults.
- 0..1
* - :litrep:``
- Configures the |DW| QoS for remote administration. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults with the following changes:
- history.kind = DDS_KEEP_ALL_HISTORY_QOS
- resource_limits.max_samples = 32
- 0..1
* - :litrep:``
- Configures the |DR| QoS for remote administration. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults with the following changes:
- reliability.kind = DDS_RELIABLE_RELIABILITY_QOS (this value cannot be changed)
- history.kind = DDS_KEEP_ALL_HISTORY_QOS
- resource_limits.max_samples = 32
- 0..1
* - :litrep:``
- Configures |RTI_DISTLOG|. |br|
When you enable it, |RS| will publish its log messages to |CONNEXT|.
Example:
.. code-block:: xml
...
true
- 0..1
* - :litrep:``
- A boolean that, if true, automatically triggers a save command when
configuration updates are received. |br|
This value is sent as part of the monitoring configuration data for the
|RS|. |br|
**Default:** false.
- 0..1
* - :litrep:``
- Specifies the file that will contain the saved configuration. |br|
A ```` must be specified if you want to use the save
command. If the specified file already exists, the file will be
overwritten when save is executed. |br|
**Default:** [CURRENT DIRECTORY].
- 0..1
.. _section-config-monitoring:
Monitoring
----------
You can create a |CONNEXT| application that can remotely monitor the status of
|RS|. To enable remote monitoring and configure its behavior, use the
```` and ```` tags.
By default, remote monitoring is turned off in |RS| for security and
performance reasons. A remote monitoring section is not required in the
configuration file.
When remote monitoring is enabled, |RS| will create one |DP|, one |PUB|, five
|DWs| for data publication (one for each kind of entity), and five |DWs| for
status publication (one for each kind of entity). You can configure the QoS of
these entities with the ```` tag defined under |SERVICE_TAG|.
The general remote monitoring parameters specified using the ````
tag in |SERVICE_TAG| can be overwritten on a per entity basis using the
```` tag.
For more details, please see :numref:`section-monitoring`.
.. note::
The command-line options used to configure remote monitoring take
precedence over the XML configuration (See :numref:`section-usage`).
.. list-table:: Monitoring Tag
:name: TableMonitoringTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Enables/disables general remote monitoring. |br|
Setting this value to true enables monitoring in all the entities
unless they explicitly disable it by setting this tag to false in
their local ```` tags. |br|
Setting this tag to false disables monitoring in all the entities. In
this case, any monitoring configuration settings in the entities are
ignored.
**Default:** true
- 0..1
* - :litrep:``
- Specifies which domain ID |RS| will use to enable remote
monitoring. |br|
- 1
* - :litrep:``
- Configures the |DP| QoS for remote monitoring. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults, with the following change:
- resource_limits.type_code_max_serialized_length = 4096
- 0..1
* - :litrep:``
- Configures the |PUB| QoS for remote monitoring. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults.
- 0..1
* - :litrep:``
- Configures the |DW| QoS for remote monitoring. |br|
If the tag is not defined, |RS| will use the |CONNEXT|
defaults with the following change:
- durability.kind = DDS_TRANSIENT_LOCAL_DURABILITY_QOS
- 0..1
* - :litrep:``
- Specifies the frequency, in seconds, at which status statistics are gathered. |br|
Statistical variables such as latency are part of the entity status. |br|
Example:
.. code-block:: xml
10
The statistics period for a given entity should be smaller than the
publication period. |br|
The statistics sampling period defined in |SERVICE_TAG| is
inherited by all the entities.
An entity can overwrite the period. |br|
**Default:** 1
- 0..1
* - :litrep:``
- Specifies the frequency, in seconds, at which the status of an entity is published. |br|
Example:
.. code-block:: xml
50
The statistics sampling period defined in |SERVICE_TAG| is inherited by
all the entities.
An entity can overwrite the period. |br|
**Default:** 5
- 0..1
.. _section-config-monitoring-inheritance:
Monitoring Configuration Inheritance
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The monitoring configuration defined in |SERVICE_TAG| is inherited by all the
entities defined inside the tag.
An entity can overwrite three elements of the monitoring configuration:
- The status publication period
- The statistics sampling period
- The historical statistics windows
Each one of these three elements is inherited and can be overwritten
independently using the ```` tag.
.. list-table:: Entity Monitoring Tag
:name: TableEntityMonitoringTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Enables/disables remote monitoring for a given entity. |br|
If general monitoring is disabled, this value is ignored. |br|
**Default:** true
- 0..1
* - :litrep:``
- Specifies the frequency at which status statistics are gathered. |br|
Statistical variables such as latency are part of the entity status. |br|
Example:
.. code-block:: xml
10
The statistics period for a given entity should be smaller than the
publication period. |br|
If this tag is not defined, historical statistics are inherited from
the general monitoring settings.
**Default:** 1 second.
- 0..1
* - :litrep:``
- Specifies the frequency at which the status of an entity is published. |br|
Example:
.. code-block:: xml
50
If this tag is not defined, historical statistics are inherited from
the general monitoring settings.
**Default:** 5 seconds.
- 0..1
Example: Overriding Publication Period
''''''''''''''''''''''''''''''''''''''
.. code-block:: xml
55110
...
4
...
.. _section-Config-DomainRoute:
Domain Route
------------
A ```` defines a mapping between different data domains. Data
available in any of these data domains can be routed to other data domains.
For example, a |DOMAINROUTE| could define a mapping among multiple DDS domains,
or between a DDS domain and a MQTT provider's network. How this data is actually
read and written is defined in specific |ROUTEs|.
A ```` creates one or more |CONNECTIONs|. Each |CONNECTION|
typically belongs to a different data domain. The ```` tag requires
the specification of the attribute ``name``, which will be used by the |Route|
to select input and output domains, and the ``plugin_name``, which will be
used to associate a |CONNECTION| with an adapter plugin defined within
````.
|RS| comes with a builtin implementation of a DDS adapter, which can be
used by specifying the ```` tag. Each tag corresponds to exactly
one |DP|. A |DOMAINROUTE| can include both ```` and ````
tags to provide communication between DDS domains and other data domains.
.. list-table:: Domain Route Tag
:name: TableDomainRouteTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Enables and configures remote monitoring for the |DOMAINROUTE|. |br|
See :numref:`section-monitoring`.
- 0..1
* - :litrep:``
- Applicable to non-DDS domains. |br|
Configures a custom, adapter-based connection. |br|
Attributes
- ``name``: Uniquely identifies a service configuration. Required.
- ``plugin_name``: Name of the plug-in that creates an adapter object.
This name shall refer to an adapter plug-in registered
either in a ```` or with the service's
attach_adapter_plugin() operation. Required.
See :numref:`TableConnectionTag`.
- 0..*
* - :litrep:``
- Applicable to DDS domains. |br|
Configures a DDS adapter |DP|. |br|
See :numref:`TableParticipantTag`.
- 0..*
* - :litrep:``
- Defines a multi-threaded context in which data is routed according to
specified routes. See :numref:`section-config-session`.
Attributes
- ``name``: uniquely identifies the |SESSION| configuration. Optional.
- ``enabled``: A boolean that indicates whether this entity is
auto-enabled when the service starts. If set to false, the entity
can be enabled after the service starts through remote administration.
Optional. |br|
Default: true.
- 0..*
.. list-table:: Connection Tag
:name: TableConnectionTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- A sequence of name-value string pairs that allows you to configure the
|CONNECTION| instance.
Example:
.. code-block:: xml
jms.connection.usernamemyusername
- 0..1
* - :litrep:``
- Registers a type name and associates it with a type representation. |br|
When you define a type in the configuration file, you have to register
the type in order to use it in |ROUTEs|. |br|
See :numref:`section-Config-Route`.
- 0..*
.. list-table:: Participant Tag
:name: TableParticipantTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Sets the domain ID associated with the |DP|. |br|
**Default:** 0 |br| |br|
- 0..1
* - :litrep:``
- Sets the participant QoS. |br|
The contents of this tag are specified in the same manner as a
|CONNEXT| QoS profile. If not specified, the DDS defaults are used,
except for the participant name which takes the following value:
"RTI |RS_HEADING|: .#[1|2]"
(for example "RTI |RS_HEADING|: MyService.MyDomainRoute#1").
.. note::
Changing the default participant name may prevent
|RS| from being detected by Admin Console.
You can use a
```` tag inside a ``/``
previously defined in your configuration file by referring to it, and
also override any value:
Example:
.. code-block:: xml
udpv4://192.168.1..12shmem://
See :link_configuring_qos_xml:`Configuring QoS with XML, in the Connext
DDS Core Libraries User's Manual <>`.
- 0..1
* - :litrep:``
- Configures certain aspects of how |CONNEXT| allocates internal memory.
The configuration is per |DP| and therefore affects all the contained
DDS entities. |br|
Example:
.. code-block:: xml
1024
true
This tag includes the following tags:
- **sample_buffer_min_size**: For all |DRs| and |DWs|, the way
|CONNEXT| allocates memory for samples is as follows:
|CONNEXT| pre-allocates space for samples up to size X in the
|DR| and |DW| queues. If a sample has an actual size greater
than X, the memory is allocated dynamically for that sample.
The default size is 64KB. This is the maximum amount of
pre-allocated memory. Dynamic memory allocation may occur
when necessary if samples require a bigger size.
- **sample_buffer_trim_to_size**: If set to true, after allocating
dynamic memory for very large samples, that memory will be
released when possible. If false, that memory will not be
released but kept for future samples if needed.
The default is false.
This feature is useful when a data type has a very high maximum size
(e.g., megabytes) but most of the samples sent are much smaller than
the maximum possible size (e.g., kilobytes). In this case, the memory
footprint is reduced dramatically, while still correctly handling the
rare cases in which very large samples are published.
- 0..1
* - :litrep:``
- Registers a type name and associates it with a type representation. |br|
When you define a type in the configuration file, you have to register
the type in order to use it in |ROUTEs|. |br|
See :numref:`section-Config-Route`.
- 0..*
Example: Mapping between Two DDS Domains
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: xml
54
...
55
...
...
Example: Mapping between a DDS Domain and raw Sockets
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: xml
...
55
...
...
.. _section-config-session:
Session
-------
A ```` tag defines a multi-threaded context for route processing,
including data forwarding. The data is routed according to specified |ROUTEs|
and |ARs|.
Each |SESSION| will have an associated thread pool to process |ROUTEs|
concurrently, preserving |ROUTE| safety. Multiple |ROUTEs| can be processed
concurrently, but a single |ROUTE| can be processed only by one thread at time.
By default, the session thread pool has a single thread, which serializes the
processing of all the |ROUTEs|.
|SESSIONs| that bridge domains will create a |PUB| and a |SUB| from the |DPs|
associated with the domains. :numref:`TableSessionTag` lists the tags
allowed within a ```` tag.
.. list-table:: Session Tag
:name: TableSessionTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Enables and configures remote monitoring for the |SESSION|. |br|
See :numref:`section-monitoring`.
- 0..1
* - :litrep:``
- Defines the number of threads to process |ROUTEs| and sets the mask,
priority, and stack size of each thread.
Example:
.. code-block:: xml
MASK_DEFAULTTHREAD_PRIORITY_DEFAULT
THREAD_STACK_SIZE_DEFAULT
Default values:
- **size**: 1
- **mask**: MASK_DEFAULT
- **priority**: THREAD_PRIORITY_DEFAULT
- **stack_size**: THREAD_STACK_SIZE_DEFAULT
- 0..1
* - :litrep:``
- Enables the periodic event dispatching to Processors. |br|
If enabled, the |SESSION| will wake up and notify the installed Processor
specified period. |br|
**Default:** INFINITE (no periodic notification)
- 0..1
* - :litrep:``
- A sequence of name-value string pairs that allows you to configure the
|SESSION| instance.
Example:
.. code-block:: xml
com.rti.socket.timeout1
These properties are only used in non-DDS domains.
- 0..1
* - :litrep:``
- Only applicable to |ROUTEs| that are |CONNEXT| |ROUTEs|. |br|
Sets the QoS associated with the session |SUBs|. There is one
|SUB| per |DP|. The contents of this tag are specified in the same
manner as a |CONNEXT| QoS profile. See
:link_configuring_qos_xml:`Configuring QoS with XML, in the Connext
DDS Core Libraries User's Manual <>`.
If the tag is not defined, |RS| will use the |CONNEXT|
defaults.
- 0..1
* - :litrep:``
- Only applicable to |ROUTEs| that are |CONNEXT| |ROUTEs|. |br|
Sets the QoS associated with the session |PUBs|. There is one
|PUB| per |DP|. The contents of this tag are specified in the same
manner as a |CONNEXT| QoS profile. See
:link_configuring_qos_xml:`Configuring QoS with XML, in the Connext
DDS Core Libraries User's Manual <>`.
If the tag is not defined, |RS| will use the |CONNEXT|
defaults.
- 0..*
* - :litrep:`` or :litrep:``
- Defines a mapping between multiple input and output streams. |br|
Attributes
- ``name``: uniquely identifies a |TR| or |ROUTE| configuration.
Optional.
- ``enabled``: A boolean that indicates whether this entity is
auto-enabled when the service starts. If set to false, the entity
can be enabled after the service starts through remote administration.
Optional. |br|
Default: true.
See :numref:`section-Config-Route`.
- 0..*
* - :litrep:`` or :litrep:``
- Defines a factory for |ROUTE| based on type and stream filters. |br|
See :numref:`section-Config-AutoRoute`.
Attributes
- ``name``: uniquely identifies an |ATR| or |AR| configuration.
Optional.
- ``enabled``: A boolean that indicates whether this entity is
auto-enabled when the service starts. If set to false, the entity
can be enabled after the service starts through remote administration.
Optional. |br|
Default: true.
- 0..*
.. _section-Config-Route:
Route
-----
A |ROUTE| explicitly defines a mapping between one or more input data streams
and one or more output data streams. The input and output streams may belong to
different data domains.
|ROUTE| events are processed in the context of the thread belonging to the
parent |SESSION|. |ROUTE| event processing includes, among others, calls to the
|SR| read and |SW| write operations.
:numref:`TableRouteTag` lists the tags allowed within a ````.
:numref:`TableTopicRouteTag` lists the tags allowed within a ````.
.. list-table:: Route Tag
:name: TableRouteTag
:widths: 30 60 10
:header-rows: 1
:class: longtable
* - Tags within :litrep:``
- Description
- Multiplicity
* - :litrep:``
- Enables and configures remote monitoring for the |ROUTE|. |br|
See :numref:`section-monitoring`.
- 0..1
* - :litrep:``
- Defines if the input connection will use types discovered in the output
connection and vice versa for the creation of |SWs| and |SRs| in the
|ROUTE|. |br|
See :numref:`section-Config-TypeDiscovery`. |br|
**Default:** false
- 0..1
* - :litrep:``
- When this tag is true, the data samples read from the input stream are
written into the output stream with the same timestamp that was
associated with them when they were made available in the input domain. |br|
This option may not be applicable in some adapter implementations in
which the concept of timestamp is unsupported. |br|
**Default:** false
- 0..1
* - :litrep:``
- Sets a custom Processor for handling the data forwarding process. |br|
See :numref:`section-Sdk`.
Attributes
- ``plugin_name``: Name of the plug-in that creates a |PROCESSOR| object.
This name shall refer to a processor plug-in registered
either in a ```` or with the service
attach_processor() operation.
- 0..1
* - :litrep:``
- Only applicable to DDS inputs. Defines an input topic.
See :numref:`section-Config-StreamPort`.
Attributes
- ``name``: uniquely identifies an input configuration. Optional.
- 0..*
* - :litrep:``
- Only applicable to DDS outputs. Defines an output topic.
See :numref:`section-Config-StreamPort`.
Attributes
- ``name``: uniquely identifies an output configuration. Optional.
- 0..*
* - :litrep:``
- Only applicable to non-DDS inputs. Defines an input stream.
See :numref:`section-Config-StreamPort`.
Attributes
- ``name``: uniquely identifies an input configuration. Optional.
- 0..*
* - :litrep:`