I have the following IDL file:
------------------------------------------------------------------
module config {
const string Topic = "Topic";
enum MessageType
{
REQUEST,
RESPONSE
};
struct Request
{
long spare;
};
struct Response
{
string<32> Id;
string<32> Date;
boolean force;
};
union MessageUnion switch ( MessageType )
{
case REQUEST:
Request request;
case RESPONSE:
Response response;
};
};
------------------------------------------------------------------
The equivalent xml is:
------------------------------------------------------------------
<types xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:////home/testsetup/rti_connext_dds-5.3.0/bin/../resource/app/app_support/rtiddsgen/schema/rti_dds_topic_types.xsd">
<module name="config">
<const name="Topic" type="string" value=""Topic""/>
<enum name="MessageType">
<enumerator name="REQUEST"/>
<enumerator name="RESPONSE"/>
</enum>
<struct name= "Request">
<member name="spare" type="int32"/>
</struct>
<struct name= "Response">
<member name="Id" stringMaxLength="32" type="string"/>
<member name="Date" stringMaxLength="32" type="string"/>
<member name="force" type="boolean"/>
</struct>
<union name="MessageUnion">
<discriminator type="nonBasic" nonBasicTypeName="config::MessageType"/>
<case>
<caseDiscriminator value="(config::REQUEST)"/>
<member name="request" type="nonBasic" nonBasicTypeName= "config::Request"/>
</case>
<case>
<caseDiscriminator value="(config::RESPONSE)"/>
<member name="response" type="nonBasic" nonBasicTypeName= "config::Response"/>
</case>
</union>
</module>
</types>
------------------------------------------------------------------
I want to :
- publish the union with request structure
- subscribe the union with response structure
I am unable to figure out how to publish the union that has member as a structure.
Kindly help asap