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 TOPIC_DISABLED 00057 }; 00058 00059 struct WriterAssociation { 00060 TransportLocatorSeq writerTransInfo; 00061 RepoId writerId; 00062 ::DDS::PublisherQos pubQos; 00063 ::DDS::DataWriterQos writerQos; 00064 }; 00065 00066 struct ReaderAssociation { 00067 TransportLocatorSeq readerTransInfo; 00068 RepoId readerId; 00069 ::DDS::SubscriberQos subQos; 00070 ::DDS::DataReaderQos readerQos; 00071 string filterClassName; 00072 string filterExpression; 00073 ::DDS::StringSeq exprParams; 00074 }; 00075 00076 typedef sequence<RepoId> WriterIdSeq; 00077 00078 typedef sequence<RepoId> ReaderIdSeq; 00079 00080 typedef octet OctetArray16[16]; 00081 00082 /* Type used to represent the addressing information needed to send a 00083 message to an RTPS Endpoint */ 00084 struct Locator_t { 00085 long kind; 00086 unsigned long _port; 00087 OctetArray16 address; 00088 }; 00089 00090 typedef sequence<Locator_t> LocatorSeq; 00091 00092 typedef string<256> String256; 00093 00094 /* information to enable content filtering */ 00095 struct ContentFilterProperty_t { 00096 String256 contentFilteredTopicName; 00097 String256 relatedTopicName; 00098 String256 filterClassName; 00099 string filterExpression; 00100 DDS::StringSeq expressionParameters; 00101 }; 00102 00103 struct ReaderProxy_t { 00104 GUID_t remoteReaderGuid; // optional in DiscoveredReaderData 00105 boolean expectsInlineQos; 00106 LocatorSeq unicastLocatorList; 00107 LocatorSeq multicastLocatorList; 00108 TransportLocatorSeq allLocators; 00109 GUIDSeq associatedWriters; 00110 }; 00111 00112 // top-level data type for SEDPbuiltinSubscriptions 00113 struct DiscoveredReaderData { 00114 DDS::SubscriptionBuiltinTopicData ddsSubscriptionData; 00115 ReaderProxy_t readerProxy; 00116 ContentFilterProperty_t contentFilterProperty; 00117 }; 00118 00119 struct WriterProxy_t { 00120 GUID_t remoteWriterGuid; // optional in DiscoveredWriterData 00121 LocatorSeq unicastLocatorList; 00122 LocatorSeq multicastLocatorList; 00123 TransportLocatorSeq allLocators; 00124 }; 00125 00126 // top-level data type for SEDPbuiltinPublications 00127 struct DiscoveredWriterData { 00128 DDS::PublicationBuiltinTopicData ddsPublicationData; 00129 WriterProxy_t writerProxy; 00130 }; 00131 00132 }; // module DDS 00133 }; // module OpenDDS 00134 00135 #endif /* OPENDDS_DCPS_INFO_UTILS_IDL */