RTI Connext CORBA Compatibility Kit  Version 6.0.0
 All Groups Pages
RTI CORBA Compatibility Kit for RTI Connext
rti_logo.gif
Real-Time Innovations, Inc.

Available Documentation

This document contains:

For additional information, please see the following PDF document:

Please do not hesitate to contact RTI with questions or comments about this release. We welcome any input on how to improve RTI Connext to suit your needs.

Overview

The RTI CORBA Compatibility Kit is an optional package that allows RTI Connext code generator, rtiddsgen, to output type-specific code that is compatible with OCI's distribution of TAO and the JacORB distribution.

By having compatible data types, your applications can use CORBA and RTI Connext APIs, with no type conversions required. For more information about RTI Connext, please refer to the documentation provided within its main installation package. For more information about OCI's distribution of TAO and JacORB, please refer to the documentation included with those distributions. Additional information can be found on OCI's TAO website, http://www.theaceorb.com and JacORB's website, http://www.jacorb.org. TAO and JacOrb distributions that are compatible with this version of RTI Connext are available from RTI's Self Support portal, accessible at http://www.rti.com.

Example Applications

A simple example is available.

C++ using TAO: See the example in <rti_workspace>/examples/corba/c++. Please read Instructions.pdf.

Java using JacORB: See the example in <rti_workspace>/examples/corba/java. Please read Instructions.pdf.

Generating Code with rtiddsgen

The RTI CORBA Compatibility Kit enables the RTI Connext IDL compiler, rtiddsgen, to produce type-specific code that is compatible with OCI's distribution of TAO for C++ and with JacORB for Java. When using rtiddsgen, specify the -corba option on the command line to generate compatible code. The -corba option enables the use of data structures for both CORBA and DDS API calls without requiring any translation: the IDL-to-language mapping is the same for both.

There are some trade-off's to consider:

While the -corba option provides the benefit of CORBA-compatible type-specific code, it does not provide support for bitfields, pointers and ValueTypes. For complex types such as sequences and strings, the memory management is different when the -corba option is used. When code is generated without the option, the memory needed for the type is pre-allocated at system initialization. When code is generated with the option, the memory is allocated when it is needed, so memory allocation system calls may occur while the system is in steady state.

Without the -corba option, access to data fields within types may be faster under some circumstances. CORBA-compatible types require the use of accessor methods. When -corba is not used, while the accessor methods are provided for convenience but they can be bypassed and the data can be accessed directly. This direct access is available to the user, as well as to RTI Connext's internal implementation code. As a result, depending on the complexity of the types used, overall system latency could be lower when using non-compatible types (that is, when -corba is not used).

Generating C++ Code

To generate CORBA-compatible type-specific code, first run TAO's code generator, tao_idl, on the IDL file containing your data types. If you followed the TAO distribution compilation instructions contained in this documentation, the tao_idl compiler executable will be in the TAO install directory under <ACE_ROOT>/bin.

To generate CORBA support files for your data types, enter:

TAO 1.4: <ACE_ROOT>/bin/tao_idl <IDL file name>.idl
TAO 1.6: <ACE_ROOT>/bin/tao_idl -GT <IDL file name>.idl

The generated file will have a name matching the pattern <IDL file name>C.h and will contain the type definitions. Pass this header file as a parameter to rtiddsgen to generate the DDS support code for the data types, by entering:

rtiddsgen -language C++ -corba <IDL file name>C.h [-orb <orb>] [-example <architecture>] <IDL file name>.idl

The optional -orb <orb> flag can have the values ACE_TAO1.4 or ACE_TAO1.6. The default value is ACE_TAO1.4.

The optional -example <architecture> flag will generate code for a DDS publisher and a DDS subscriber. It will also generate .mpc and .mwc files that can be used with TAO's Makefile, Project and Workspace Creator (MPC) to generate a makefile or a Visual Studio Project for your application. The generated files are meant to work out-of-the-box with the RTI Connext HelloWorld Publisher and Subscriber applications only – you will have to modify them to compile your custom application. Please refer to the DDS-CORBA C++ example for details on how to customize the generated files to fit your application (see <RTI_Data_Distribution_Service_INSTALL_ROOT>/example/CPP/corba/Instructions.pdf).

Generating Java Code

To generate Java CORBA-compatible type specific code, first run the JacORB code generator on the IDL file containing your data types:

<JacORB install dir>/bin/idl <IDL file name>.idl

After generating the CORBA code for the IDL types run rtiddsgen as follows:

rtiddsgen -language Java -corba -example <architecture> <IDL file name>.idl

The optional -example <architecture> flag will generate code for a DDS publisher and a DDS subscriber. It will also generate a makefile specific to your architecture that can be used to compile the example using the publisher and subscriber code generated. To form a complete code set, use the type class generated by the CORBA IDL compiler and the files generated by rtiddsgen.

Supported IDL Types

IDL Construct Support
Modules Supported
Interfaces Ignored
Constants Supported
Basic Data Types Supported
Enums Supported
String Types Supported
Wide String Types Supported
Struct Types Supported. Inline nested structures, such as the following example, are not supported.
        struct Outer {
                    short outer_short;

                        struct Inner {
                                    char inner_char;
                                    short inner_short;
                        } outer_nested_inner;
                 };
Fixed Types Ignored
Union Types Supported
Sequence Types Supported.
    Sequences of anonymous sequences are not supported.
    This kind of type will be banned in future revisions of CORBA. 
    For example, the following is not supported: 
    @code 
            sequence<sequence<short,4>,4> MySequence;
    \endcode
    Instead, sequences of sequences can be supported using typedef definitions. 
    For example, this is supported:
    @code 
            typedef sequence<short,4> MyShortSequence;
            sequence<MyShortSequence,4> MySequence;
    \endcode
    </td>
Array Types Supported
Typedefs Supported
Any Not Supported. rtiddsgen does not ignore them. Do not use this construct in the IDL file.
Value Types Ignored
Exception Types Supported. With DDS, DDS type codes should be used. With CORBA, CORBA Type codes should be used.

RTI Connext CORBA Compatibility Kit Version 6.0.0 Copyright © Sun Mar 3 2019 Real-Time Innovations, Inc