00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_INFO_UTILS_IDL 00009 #define OPENDDS_DCPS_INFO_UTILS_IDL 00010 #include "dds/DdsDcpsCore.idl" 00011 #include "dds/DdsDcpsGuid.idl" 00012 00013 module OpenDDS 00014 { 00015 module DCPS 00016 { 00017 // These are unique across a domain 00018 // They are also the InstanceHandle_t in Sample_Info for built-in Topics 00019 typedef GUID_t RepoId; 00020 00021 typedef DDS::OctetSeq TransportBLOB; 00022 00023 struct TransportLocator { 00024 /// The transport type (e.g. tcp or udp) 00025 string transport_type; 00026 /// Information about the transport instance that is opaque to all but 00027 /// code specific to that transport implementation. 00028 TransportBLOB data; 00029 }; 00030 00031 typedef sequence<TransportLocator> TransportLocatorSeq; 00032 00033 struct IncompatibleQosStatus { 00034 long total_count; 00035 long count_since_last_send; 00036 DDS::QosPolicyId_t last_policy_id; 00037 DDS::QosPolicyCountSeq policies; 00038 }; 00039 00040 // Information returned from call to add_domain_participant() 00041 struct AddDomainStatus { 00042 RepoId id; 00043 boolean federated; 00044 }; 00045 00046 // Status returned by a topic operation 00047 enum TopicStatus { 00048 CREATED, 00049 ENABLED, 00050 FOUND, 00051 NOT_FOUND, 00052 REMOVED, 00053 CONFLICTING_TYPENAME, 00054 PRECONDITION_NOT_MET, 00055 INTERNAL_ERROR 00056 }; 00057 00058 struct WriterAssociation { 00059 TransportLocatorSeq writerTransInfo; 00060 RepoId writerId; 00061 ::DDS::PublisherQos pubQos; 00062 ::DDS::DataWriterQos writerQos; 00063 }; 00064 00065 struct ReaderAssociation { 00066 TransportLocatorSeq readerTransInfo; 00067 RepoId readerId; 00068 ::DDS::SubscriberQos subQos; 00069 ::DDS::DataReaderQos readerQos; 00070 string filterClassName; 00071 string filterExpression; 00072 ::DDS::StringSeq exprParams; 00073 }; 00074 00075 typedef sequence<RepoId> WriterIdSeq; 00076 00077 typedef sequence<RepoId> ReaderIdSeq; 00078 00079 typedef octet OctetArray16[16]; 00080 00081 /* Type used to represent the addressing information needed to send a 00082 message to an RTPS Endpoint */ 00083 struct Locator_t { 00084 long kind; 00085 unsigned long _port; 00086 OctetArray16 address; 00087 }; 00088 00089 typedef sequence<Locator_t> LocatorSeq; 00090 00091 typedef string<256> String256; 00092 00093 /* information to enable content filtering */ 00094 struct ContentFilterProperty_t { 00095 String256 contentFilteredTopicName; 00096 String256 relatedTopicName; 00097 String256 filterClassName; 00098 string filterExpression; 00099 DDS::StringSeq expressionParameters; 00100 }; 00101 00102 struct ReaderProxy_t { 00103 GUID_t remoteReaderGuid; // optional in DiscoveredReaderData 00104 boolean expectsInlineQos; 00105 LocatorSeq unicastLocatorList; 00106 LocatorSeq multicastLocatorList; 00107 TransportLocatorSeq allLocators; 00108 GUIDSeq associatedWriters; 00109 }; 00110 00111 // top-level data type for SEDPbuiltinSubscriptions 00112 struct DiscoveredReaderData { 00113 DDS::SubscriptionBuiltinTopicData ddsSubscriptionData; 00114 ReaderProxy_t readerProxy; 00115 ContentFilterProperty_t contentFilterProperty; 00116 }; 00117 00118 struct WriterProxy_t { 00119 GUID_t remoteWriterGuid; // optional in DiscoveredWriterData 00120 LocatorSeq unicastLocatorList; 00121 LocatorSeq multicastLocatorList; 00122 TransportLocatorSeq allLocators; 00123 }; 00124 00125 // top-level data type for SEDPbuiltinPublications 00126 struct DiscoveredWriterData { 00127 DDS::PublicationBuiltinTopicData ddsPublicationData; 00128 WriterProxy_t writerProxy; 00129 }; 00130 00131 }; // module DDS 00132 }; // module OpenDDS 00133 00134 #endif /* OPENDDS_DCPS_INFO_UTILS_IDL */