RTI Routing Service
Release Notes
Version 5.0.0
© 2012
All rights reserved.
Printed in U.S.A. First printing.
August 2012.
Trademarks
Copy and Use Restrictions
No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form (including electronic, mechanical, photocopy, and facsimile) without the prior written permission of Real- Time Innovations, Inc. The software described in this document is furnished under and subject to the RTI software license agreement. The software may be used or copied only under the terms of the license agreement.
Technical Support
232 E. Java Drive
Sunnyvale, CA 94089
Phone: |
(408) |
Email: |
support@rti.com |
Website: |
|
|||
|
|||
|
|||
|
|||
|
|||
|
4.3Ability to Propagate Related Sample Identity for Applications Using New
iii
Release Notes
1 |
Supported Platforms |
|
|
|
RTI® Routing Service is supported on these platforms: |
|
|
Table 1.0 |
Supported Platforms |
|
|
|
|
|
|
|
Platform |
Operating System |
Architecture |
|
|
|
|
|
|
|
|
|
INTEGRITY |
INTEGRITY 10 |
pentiumInty10.0.0.0.pcx861 |
|
|
CentOS 5.4, 5.5 (2.6 kernel) |
i86Linux2.6gcc4.1.2 |
|
|
x64Linux2.6gcc4.1.2 |
|
|
|
|
|
|
|
|
|
|
|
Red Hat Enterprise Linux 5.0 |
i86Linux2.6gcc4.1.1 |
|
|
x64Linux2.6gcc4.1.1 |
|
|
|
|
|
|
|
|
|
|
Linux® |
Red Hat Enterprise Linux 5.1, 5.2, 5.4, 5.5 |
i86Linux2.6gcc4.1.2 |
|
x64Linux2.6gcc4.1.2 |
||
|
|
|
|
|
|
|
|
|
|
Red Hat Enterprise Linux 6.0, 6,1 |
i86Linux2.6gcc4.4.5 |
|
|
x64Linux2.6gcc4.4.5 |
|
|
|
|
|
|
|
|
|
|
|
Ubuntu® Server 10.04 (2.6 kernel) |
i86Linux2.6gcc4.4.3 |
|
|
x64Linux2.6gcc4.4.3 |
|
|
|
|
|
|
|
|
|
|
Solaris™ |
Solaris 2.10 |
i86Sol2.10gcc3.4.4 |
|
|
|
|
|
|
Windows 7 |
i86Win32VS2005 |
|
|
i86Win32VS2008 |
|
|
|
Windows Server® 2008 R2 |
|
|
|
i86Win32VS2010 |
|
|
Windows® |
Windows 2003 |
|
|
x64Win64VS2005 |
||
|
|
Windows Vista® |
|
|
|
x64Win64VS2008 |
|
|
|
Windows XP Professional |
|
|
|
x64Win64VS2010 |
|
|
|
|
|
|
|
|
|
|
1. Does not include TCP/IPv4 transport plugin; implemented as a static library |
2Supported Languages
❏The transformation plugin API is only available in C.
❏The adapter plugin API is available in C and Java.
1
3 Compatibility
3.1Connext Compatibility
RTI Routing Service is built on top of, and intended for use with, RTI Connext™ with the same version number.
With the
Note: RTI Routing Service is not compatible with applications built with RTI Data Distribution Service 4.5e and earlier releases when communicating over shared memory. For more
information, please see the Transport Compatibility section in the RTI Core Libraries and Utilities Release Notes.1
3.1.1RTI Data Distribution Service 4.2e Compatibility
If the applications’ data types contain
If the applications use large data, Routing Service must be configured with the following properties set to 1 in order to be compatible with RTI Data Distribution Service 4.2e:
❏dds.data_writer.protocol.use_43_large_data_format
❏dds.data_reader.protocol.use_43_large_data_format
3.1.2RTI Data Distribution Service 4.3e Compatibility
If the applications use large data, Routing Service must be configured with the following properties set to 1 in order to be compatible with RTI Data Distribution Service 4.3e.
❏dds.data_writer.protocol.use_43_large_data_format
❏dds.data_reader.protocol.use_43_large_data_format
3.1.3Mixing Different RTI Data Distribution Service Versions
This Routing Service version can be used simultaneously with applications built using compatible versions of Connext and RTI Data Distribution Service (see Connext Compatibility (Section 3.1)), unless special configuration is required as described above.
3.2
Starting with Routing Service 1.1.0, the
Also starting with Routing Service 1.1.0, the allowed values for the
For additional information about
3.3XML Compatibility
❏Starting with Routing Service 1.1.0, the attribute “name” in the <routing_service> tag is now required. Old XML files without the name attribute will not be parsed by Routing Service 1.1.0 and higher.
1.See <Connext installation directory>/ndds.<version>/doc/pdf/RTI_CoreLibrariesAndUtilities_ReleaseNotes.pdf.
2
❏Starting with Routing Service 2.0.0, the way to register and configure transformations in the configuration file has changed:
•The tag <transformation_class_library> has been replaced with <transformation_library>
•The tag <transformation_class> has been replaced with <transformation_plugin>.
•The content of these tags has also changed. With the new configuration there is only a single entry point to the library. For example:
<transformation_library name="MyTransfLib"> <transformation_plugin name="MyTransfPlugin">
<dll>mytransformation</dll>
<create_function>
</create_function> </transformation_plugin>
</transformation_library>
•The configuration of a transformation within <route> is done using properties instead of the <expression> and <parameter> tags. For example:
<transformation plugin_name="TransformationLib::Assignment"> <property>
<value>
<element>
<name>X</name>
<value>Y</value>
</element>
<element>
<name>Y</name>
<value>X</value>
</element>
</value>
</property>
</transformation>
•The configuration of the assignment transformation distributed with Routing Service is now done with properties. For example:
Before 2.0.0:
<transformation className="TransformationLib::Assignment"> <expression></expression> <parameter>position.x=position.y</parameter> <parameter>x=10</parameter>
</transformation>
In 2.0.0 and higher:
<transformation plugin_name="TransformationLib::Assignment"> <property>
<value>
<element>
<name>position.x</name>
<value>position.y</name>
</element>
<element>
<name>x</name>
<value>10</name>
</element>
</value>
</property>
</transformation>
3
3.4Transformation API
The transformation API of Routing Service 2.0.1 and higher is not compatible with the API of previous releases (2.0.0 and lower).
The new API follows the same model as the adapter API which introduced the concept of a Plugin as a C structure that contains all the function pointers that implement the interface.
The registration of a transformation plugin with the new model requires a single
For example:
<transformation_library name="MyTransfLib"> <transformation_plugin name="MyTransfPlugin">
<dll>mytransformation</dll> <create_function>
MyTransfPlugin_create </create_function>
</transformation_plugin> </transformation_library>
The following table shows how deprecated functions map to the new API.
2.0.0 API |
2.0.1 and Higher API |
Comments |
|
(rti_routingservice.h) |
(routingservice_transformation.h) |
||
|
|||
|
|
|
|
RTITransformationClass_ |
RTI_RoutingServiceTransformation |
This is the |
|
loadFnc() |
Plugin_CreateFcn() |
||
|
|||
|
|
|
|
|
Function declaration: |
|
|
RTITransformationClass_ |
RTI_RoutingServiceTransformation |
|
|
Plugin_DeleteFcn() |
|
||
unloadFnc() |
|
||
Member in Plugin struct: |
|
||
|
|
||
|
transformation_plugin_delete |
|
|
|
|
|
|
|
Function declaration: |
|
|
|
RTI_RoutingServiceTransformation |
|
|
RTITransformationClass_ |
Plugin_CreateTransformationFcn() |
|
|
createFnc() |
Member in Plugin struct: |
|
|
|
transformation_plugin_create_ |
|
|
|
transformation |
|
|
|
|
|
|
|
Function declaration: |
|
|
|
RTI_RoutingServiceTransformation |
|
|
RTITransformationClass_ |
Plugin_DeleteTransformationFcn() |
|
|
deleteFnc() |
Member in Plugin struct: |
|
|
|
transformation_plugin_delete_ |
|
|
|
transformation |
|
|
|
|
|
|
|
Function declaration: |
|
|
RTITransformationClass_ |
RTI_RoutingServiceTransformation_ |
|
|
UpdateFcn() |
|
||
modifyFnc() |
|
||
Member in Plugin struct: |
|
||
|
|
||
|
transformation_update |
|
|
|
|
|
4
2.0.0 API |
2.0.1 and Higher API |
|
Comments |
|
|
||
(rti_routingservice.h) |
(routingservice_transformation.h) |
|
|
|
|||
|
|
|
|
|
|||
|
|
|
|
|
|
||
|
|
|
|
|
|
||
|
Function declaration: |
In the |
new |
API, the |
transform |
||
|
function accept multiple samples. |
||||||
|
RTI_RoutingServiceTransformation_ |
||||||
RTITransformationClass_ |
In addition, the output samples |
||||||
TransformFcn() |
|||||||
transformFnc() |
Member in Plugin struct: |
must |
be |
created |
by |
the |
|
|
transformation instead |
of |
being |
||||
|
transformation_transform |
||||||
|
passed in by Routing Service. |
|
|||||
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Function declaration: |
|
|
|
|
|
|
|
RTI_RoutingServiceTransformation_ |
This function is used to return the |
|||||
(none) |
ReturnLoanFcn() |
loan on the samples returned by |
|||||
|
Member in Plugin structure: |
the transform function. |
|
|
|||
|
transformation_return_loan |
|
|
|
|
|
|
|
|
|
|
|
|
|
4 What’s New in 5.0.0
4.1New Remote Command to Get Current Configuration
There is a new remote command, get <target_routing_service>, which retrieves the currently configuration and provides it in string format.
4.2Support for Environment Variables in XML Configuration Files
This new feature allows you to refer to an environment variable within an XML tag. When the Connext XML parser parses the configuration file, it will expand the environment variable. To refer to an environment variable, use the format $(MY_VARIABLE).
For example:
<element>
<name>The name is $(MY_NAME)</name> <value>The value is $(MY_VALUE)</value>
</element>
4.3Ability to Propagate Related Sample Identity for Applications Using New
RTI Connext 5.0.0 includes a new API that supports a
There are new fields in the SampleInfo and WriteParams structures related to the new Request- Reply communication pattern. Routing Service has been updated so it can propagate these new fields.
When <publish_with_original_info> is set to TRUE in a routing service route with Connext output, the Connext output will publish samples with a related_sample_identity equal to that of the received SampleInfo.
Note: There is currently a scalability limitation. Repliers that communicate directly with multiple Requesters can efficiently minimize network traffic by sending a reply only to the one Requester that requested it. However, when they communicate through a routing service route, Routing Service receives all the replies, even for Requesters that are not on the other side of the route.
5
4.4Remote Administration of Routing Service by Applications using a Requester
RTI Connext 5.0.0 includes a new API that supports a
The remote administration server in Routing Service has been updated to act as a Replier. The
The new Requester object makes it extremely simple to write a user application that remotely controls Routing Service. See the Routing Service User’s Manual (Section 5.3, Accessing Routing Service from a Connext Application) for example code.
4.5Integrated Support for Distributed Logger
The RTI Distributed Logger library is now included with RTI Routing Service.
When you enable the Distributed Logger library, Routing Service will publish its log messages to Connext. Then you can visualize the log message data with RTI Monitor, a separate GUI application that can run on the same host as your application or on a different host. Since the data is provided in a Connext topic, you can also use rtiddsspy or even write your own visualization tool.
For details on how to enable the Distributed Logger library, see the chapter on Configuring Routing Service in the RTI Routing Service User’s Manual, as well as the RTI Distributed Logger Getting Started Guide. These documents will show you how to use the new XML configuration tag, <distributed_logger>.
4.6New ‘paused’ Field for Route Description Topics
The topics published by Routing Service to describe a route or an auto route (rti/ routing_service/monitoring/route_data and rti/routing_service/monitoring/auto_route_data) have a new boolean field, paused. This field indicates if a route or auto route has been paused with the remote command pause.
4.7Monitoring Topic Now Publishes
In addition to publishing its own process CPU and memory usage, Routing Service now also publishes the CPU and memory usage for the host on which it is running. This information is in the rti/routing_service/monitoring/routing_service_status_set topic.
4.8Support for Extensible Types
Routing Service includes partial support for the “Extensible and Dynamic Topic Types for DDS” specification from the Object Management Group (OMG). See Section 2.7 in the Routing Service User’s Manual for details.
4.9Propagation of Service Version as a DomainParticipant Property
In this release, the Routing Service version number is propagated as a DomainParticipant property called "rti.service.version". The format of the value is as follows:
<major>.<minor>.<release>.rev<revision>
The version property is set in all the DomainParticipants created by the service.
6
5 What’s Fixed in 5.0.0
5.1Configuration XML Schema Incorrectly Required Content Filter Parameters
There was an error in the XSD file used in XML editors for syntax validation. Because of this error, when using an XML editor, you were required to have at least one child <parameter> when specifying a <content_filter>. Parameters to a content filter are optional. This issue did not affect the execution of Routing Service. It only affected users that included the XSD file in their XML editors.
[RTI Issue ID
5.2Compiler Errors for Java Applications using
Because the Java keyword 'final' was used as a field name in the topics for remote administration (RoutingServiceAdministration.idl), Java applications that used these topics to remotely administer Routing Service failed to compile. This problem has been resolved by changing the field name to is_final.
[RTI Issue ID
5.3Save Command did not Save Configurations in RTI_ROUTING_SERVICE.xml
The remote command, save, did not save the <routing_service> configuration tags in the file RTI_ROUTING_SERVICE.xml and may have generated a configuration file that was empty except for <dds> tags. This problem has been resolved; now when a tag in RTI_ROUTING_SERVICE.xml is being used, it will be saved when Routing Service receives a save command.
[RTI Issue ID
5.4Monitoring Failed in Routing Service if <memory_management> Tag Used
When enabling Monitoring in Routing Service, Connext would fail to publish information about a DataWriter if the tag <memory_management> was included in the same participant where monitoring was enabled. This problem has been resolved.
[RTI Issue ID
5.5Using ‘disable’ Command after Unloading a Configuration Resulted in Crash
Routing Service could have crashed after a 'disable' remote command if an XML configuration was not loaded at that moment (e.g., after sending the 'unload' command or after a parsing failure when issuing the 'load' command). This problem has been resolved. Now the ‘disable’ command will be safely ignored if there is no current configuration loaded.
[RTI Issue ID
6 Known Issues
6.1Limitations in Adapter API
In the Adapter API, Connection::get_attributes() and update operations are currently not supported.
6.2Sequences of Transformations in a Route are Not Supported
The tag <transformation_sequence> within a <topic_route> is not supported. In this version only one transformation per route is supported.
7
6.3Assignment Data Transformation only Supports Assignment of Primitive Fields Not Part of Arrays or Sequences
The data transformation library distributed with Routing Service only supports the assignment of primitive fields (including strings) that are not part of arrays or sequences.
For example:
<transformation className="TestTransformationLib::FieldMapping"> <expression></expression> <parameter>position.x=position.y</parameter> <!- This is supported
<parameter>x=y</parameter> |
<!- This is supported |
||||
<parameter>x[0]=y[0]</parameters> |
<!- |
This |
is |
not |
supported |
<parameter>position=position</parameter> |
<!- |
This |
is |
not |
supported |
</transformation>
For additional details about data transformation, see Chapter 3 in the Routing Service User’s Manual.
7 Available Documentation
Routing Service documentation includes:
❏Release Notes
❏Getting Started Guide
❏User’s Manual
8 Custom Supported Platform
Routing Service is also supported on the platforms listed in Table 8.1; these are target platforms for which RTI offers custom support. If you are interested in these platforms, please contact your local RTI representative or email sales@rti.com.
Table 8.1 Custom Supported Platforms
Operating System |
CPU |
Compiler |
RTI Architecture |
|
Abbreviation |
||
|
|
|
|
|
|
|
|
|
|
|
|
Mistral Linux Kernel 2.6.32 |
ARMv7 |
Sourcery G++ Lite |
armv7leLinux2.6gcc4.4.1 |
|
|
|
|
8