eProsima Fast DDS-Gen is a Java application that generates eProsima Fast DDS source code using the data types
defined in an IDL (Interface Definition Language) file.
This generated source code can be used in any Fast DDS application in order to define the data type of a topic,
which will later be used to publish or subscribe.
eProsima Fast DDS defines the data type exchanged in a Topic through two classes: the
TypeSupport and the
TopicDataType describes the data type exchanged between a publication and a subscription, i.e.
the data corresponding to a Topic; while
TypeSupport encapsulates an instance of TopicDataType, providing
the functions needed to register the type and interact with the publication and subscription.
Please refer to Definition of data types for more information on data types.
To declare the structured data, the IDL format must be used. IDL is a specification language, made by OMG (Object Management Group), which describes an interface in a language independent manner, allowing communication between software components that do not share the same language. The eProsima Fast DDS-Gen tool reads the IDL files and parses a subset of the OMG IDL specification to generate source code for data serialization. This subset includes the data type descriptions included in Defining a data type via IDL. The rest of the file content is ignored.
eProsima Fast DDS-Gen generated source code uses Fast CDR, a C++11 library that provides the data serialization and codification mechanisms. Therefore, as stated in the RTPS standard, when the data are sent, they are serialized and encoded using the corresponding Common Data Representation (CDR). The CDR transfer syntax is a low-level representation for inter-agents transfer, mapping from OMG IDL data types to byte streams. Please refer to the official CDR specification for more information on the CDR transfer syntax (see PDF section 15.3).
The main feature of eProsima Fast DDS-Gen is to facilitate the implementation of DDS applications without the knowledge of serialization or deserialization mechanisms. With Fast DDS-Gen it is also possible to generate the C++ source code of a DDS application with a publisher and a subscriber that uses the eProsima Fast DDS library (see Building a publish/subscribe application). Fast DDS-Gen can also generate Python bindings for the data types in order to use them within a Python-based Fast DDS application (see Building Python auxiliary libraries).