Is RTI Connext generally designed for build-time data types?

4 posts / 0 new
Last post
Offline
Last seen: 5 months 3 weeks ago
Joined: 05/13/2023
Posts: 12
Is RTI Connext generally designed for build-time data types?

 

So, I've been working through the C/C++/C# examples provided with the eval version of Connext.

So far, the examples I've looked at involve classes that define data schemas (eg class HelloWorld), which are "registered" with the API, associated with a topic, and then published and/or subscribed to.

This suggests (since "HelloWorld" is defined in source code) that you must know the data schema at build time.  Generally speaking, can we create DDS-enabled C++ or C# programs that can determine the topics and data types to publish or subscribe to at run time?  Either, say, by (a) by reading in a local configuration file on startup that tells it what to subscribe to and what schema to use or (b) examining on startup the published topics and data structures, and proceeding from there?

We are wondering if we can make our system at least a little bit adaptive, make modifications to the data scheme without having to recompile all senders and receivers, have at least some of them configurable instead.

(I'm brand new to DDS, so there may be (are likely) fundamental misunderstandings above... I look forward to fixing those.)

Thank you.

 

 

Organization:
Offline
Last seen: 4 days 18 hours ago
Joined: 12/05/2019
Posts: 9

Hello,

Connext offers a Dynamic Data API for a variety of APIs, such as Modern C++ or Java, that allows you to create a new type during runtime.
Additionally, Connext also supports a XML Data Type representation, defined by the OMG DDS-XTYPES standard.

Using a combination of the two, you can define your Data Types in external files in XML Type Libraries (e.g. using this XML Schema), and use the Dynamic Data API to create Topics for these.
In the end, you will be able to publish and subscribe to types using the introspection provided by the Dynamic Data API.

Do note that this flexibility is a trade-off with performance, as compiled types will be undoubtedly faster to serialize, deserialize and generally work with.

Regards,
Alejandro

Offline
Last seen: 5 months 3 weeks ago
Joined: 05/13/2023
Posts: 12

Thank you Alejandro.  Are there other APIs that offer this?  Or are Modern C++ and Java the two choices?

On performance, I imagine that this would be a performance hit on initialization, as it loads and registers the schemas, but for actual communication would you say we can expect the same performance?  In other words, I wouldnt expect the runtime data type to incur extra processing on every transmission, right?

Thanks again.

Howard's picture
Offline
Last seen: 1 week 1 day ago
Joined: 11/29/2012
Posts: 567

The DynamicData API is supported in all supported Connext language bindings including C, C++ (98 and 11), Java, C#, Python.  What language were you looking to use?

As for performance, on the wire, there is no differentiation between a data whose data type was defined dynamically versus compiled.  However, there is a difference in performance when access the members of a Dynamic Data object versus the members of a structure whose datatype is known at compile time.