RTI Connext .Net APIs
Version 5.2.0
|
<<extension>> The Dynamic Data API provides a way to interact with arbitrarily complex data types at runtime without the need for code generation. More...
Classes | |
class | DDS::DynamicDataProperty_t |
A collection of attributes used to configure DDS::DynamicData objects. More... | |
class | DDS::DynamicDataInfo |
A descriptor for a DDS::DynamicData object. More... | |
class | DDS::DynamicDataMemberInfo |
A descriptor for a single member (i.e. field) of dynamically defined data type. More... | |
class | DDS::DynamicData |
A sample of any complex data type, which can be inspected and manipulated reflectively. More... | |
class | DDS::DynamicDataSeq |
An ordered collection of DDS::DynamicData elements. More... | |
class | DDS::DynamicDataReader |
Reads (subscribes to) objects of type DDS::DynamicData. More... | |
class | DDS::DynamicDataWriter |
Writes (publishes) objects of type DDS::DynamicData. More... | |
class | DDS::DynamicDataTypeSerializationProperty_t |
Properties that govern how data of a certain type will be serialized on the network. More... | |
class | DDS::DynamicDataTypeProperty_t |
A collection of attributes used to configure DDS::DynamicDataTypeSupport objects. More... | |
class | DDS::DynamicDataTypeSupport |
A factory for registering a dynamically defined type and creating DDS::DynamicData objects. More... | |
Variables | |
static System::Int32 | DDS::DynamicData::MEMBER_ID_UNSPECIFIED |
A sentinel value that indicates that no member ID is needed in order to perform some operation. | |
static DynamicDataProperty_t^ | DDS::DynamicData::DYNAMIC_DATA_PROPERTY_DEFAULT |
Sentinel constant indicating default values for DDS::DynamicDataProperty_t. | |
static DynamicDataTypeProperty_t^ | DDS::DynamicDataTypeProperty_t::DYNAMIC_DATA_TYPE_PROPERTY_DEFAULT |
Sentinel constant indicating default values for DDS::DynamicDataTypeProperty_t. | |
<<extension>> The Dynamic Data API provides a way to interact with arbitrarily complex data types at runtime without the need for code generation.
This API allows you to define new data types, modify existing data types, and interact reflectively with samples. To use it, you will take the following steps:
1. Obtain a DDS::TypeCode (see Type Code Support) that defines the type definition you want to use.
A DDS::TypeCode includes a type's kind (::DDS::TCKind), name, and members (that is, fields). You can create your own DDS::TypeCode using the DDS::TypeCodeFactory class – see, for example, the DDS::TypeCodeFactory::create_struct_tc method. Alternatively, you can use a remote DDS::TypeCode that you discovered on the network (see Built-in Topics) or one generated by rtiddsgen.
2. Wrap the DDS::TypeCode in a DDS::DynamicDataTypeSupport object.
See the constructor DDS::DynamicDataTypeSupport::DynamicDataTypeSupport. This object lets you connect the type definition to a DDS::DomainParticipant and manage data samples (of type DDS::DynamicData).
3. Register the DDS::DynamicDataTypeSupport with one or more domain participants.
See DDS::DynamicDataTypeSupport::register_type. This action associates the data type with a logical name that you can use to create topics. (Starting with this step, working with a dynamically defined data type is almost exactly the same as working with a generated one.)
4. Create a DDS::Topic from the DDS::DomainParticipant.
Use the name under which you registered your data type – see DDS::DomainParticipant::create_topic. This DDS::Topic is what you will use to produce and consume data.
5. Create a DDS::DynamicDataWriter and/or DDS::DynamicDataReader.
These objects will produce and/or consume data (of type DDS::DynamicData) on the DDS::Topic. You can create these objects directly from the DDS::DomainParticipant – see DDS::DomainParticipant::create_datawriter and DDS::DomainParticipant::create_datareader – or by first creating intermediate DDS::Publisher and DDS::Subscriber objects – see DDS::DomainParticipant::create_publisher and DDS::DomainParticipant::create_subscriber.
6. Write and/or read the data of interest.
7. Tear down the objects described above.
You should delete them in the reverse order in which you created them. Note that unregistering your data type with the DDS::DomainParticipant is optional; all types are automatically unregistered when the DDS::DomainParticipant itself is deleted.
|
staticget |
A sentinel value that indicates that no member ID is needed in order to perform some operation.
Most commonly, this constant will be used in "get" operations to indicate that a lookup should be performed based on a name, not on an ID.
|
static |
Sentinel constant indicating default values for DDS::DynamicDataProperty_t.
Pass this object instead of your own DDS::DynamicDataProperty_t object to use the default property values:
In C#:
In C++/CLI:
|
static |
Sentinel constant indicating default values for DDS::DynamicDataTypeProperty_t.
Pass this object instead of your own DDS::DynamicDataTypeProperty_t object to use the default property values:
In C#:
In C++/CLI: