Dynamic Data
[Topic Module]

<<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.

Detailed Description

<<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.


Variable Documentation

System::Int32 DDS::DynamicData::MEMBER_ID_UNSPECIFIED [static, inherited]

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 DynamicDataProperty_t DDS::DynamicData::DYNAMIC_DATA_PROPERTY_DEFAULT [static, get, inherited]

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#:

 DynamicData sample = new DynamicData( 
      myTypeCode, 
      DynamicDataProperty_t.DYNAMIC_DATA_PROPERTY_DEFAULT); 

In C++/CLI:

 DynamicData^ sample = gcnew DynamicData( 
      myTypeCode, 
      DynamicDataProperty_t::DYNAMIC_DATA_PROPERTY_DEFAULT); 

See also:
DDS::DynamicDataProperty_t

static DynamicDataTypeProperty_t DDS::DynamicDataTypeProperty_t::DYNAMIC_DATA_TYPE_PROPERTY_DEFAULT [static, get, inherited]

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#:

 DynamicDataTypeSupport support = new DynamicDataTypeSupport( 
      myTypeCode, 
      DynamicDataTypeSupport.DYNAMIC_DATA_TYPE_PROPERTY_DEFAULT); 

In C++/CLI:

 DynamicDataTypeSupport^ support = gcnew DynamicDataTypeSupport( 
      myTypeCode, 
      DynamicDataTypeSupport::DYNAMIC_DATA_TYPE_PROPERTY_DEFAULT); 

See also:
DDS::DynamicDataTypeProperty_t


RTI Data Distribution Service .Net APIs Version 4.5e Copyright © 23 Oct 2011 Real-Time Innovations, Inc