00001
00002
00003
00004
00005
00006
00007
00008 #ifndef OPENDDS_DCPS_CORE_IDL
00009 #define OPENDDS_DCPS_CORE_IDL
00010
00011
00012
00013 #include "tao/StringSeq.pidl"
00014 #include "tao/LongSeq.pidl"
00015
00016 #define HANDLE_TYPE_NATIVE long
00017 #define BUILTIN_TOPIC_KEY_TYPE_NATIVE long
00018
00019 module DDS {
00020
00021
00022 #pragma DCPS_SUPPORT_ZERO_COPY_READ
00023
00024 typedef sequence<string> StringSeq;
00025 typedef HANDLE_TYPE_NATIVE InstanceHandle_t;
00026 typedef BUILTIN_TOPIC_KEY_TYPE_NATIVE BuiltinTopicKeyValue[3];
00027
00028 typedef sequence<InstanceHandle_t> InstanceHandleSeq;
00029
00030 typedef long QosPolicyId_t;
00031
00032 struct QosPolicyCount {
00033 QosPolicyId_t policy_id;
00034 long count;
00035 };
00036
00037 typedef sequence<QosPolicyCount> QosPolicyCountSeq;
00038
00039 typedef sequence<octet> OctetSeq;
00040
00041 struct Duration_t {
00042 long sec;
00043 unsigned long nanosec;
00044 };
00045
00046 struct UserDataQosPolicy {
00047 OctetSeq value;
00048 };
00049
00050 struct GroupDataQosPolicy {
00051 OctetSeq value;
00052 };
00053
00054 struct TopicDataQosPolicy {
00055 OctetSeq value;
00056 };
00057
00058 struct PartitionQosPolicy {
00059 StringSeq name;
00060 };
00061
00062 enum HistoryQosPolicyKind {
00063 KEEP_LAST_HISTORY_QOS,
00064 KEEP_ALL_HISTORY_QOS
00065 };
00066
00067 enum DurabilityQosPolicyKind {
00068 VOLATILE_DURABILITY_QOS,
00069 TRANSIENT_LOCAL_DURABILITY_QOS,
00070 TRANSIENT_DURABILITY_QOS,
00071 PERSISTENT_DURABILITY_QOS
00072 };
00073
00074 struct DurabilityQosPolicy {
00075 DurabilityQosPolicyKind kind;
00076 };
00077
00078 struct DurabilityServiceQosPolicy {
00079 Duration_t service_cleanup_delay;
00080 HistoryQosPolicyKind history_kind;
00081 long history_depth;
00082 long max_samples;
00083 long max_instances;
00084 long max_samples_per_instance;
00085 };
00086
00087 struct DeadlineQosPolicy {
00088 Duration_t period;
00089 };
00090
00091 struct LatencyBudgetQosPolicy {
00092 Duration_t duration;
00093 };
00094
00095 enum LivelinessQosPolicyKind {
00096 AUTOMATIC_LIVELINESS_QOS,
00097 MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
00098 MANUAL_BY_TOPIC_LIVELINESS_QOS
00099 };
00100
00101 struct LivelinessQosPolicy {
00102 LivelinessQosPolicyKind kind;
00103 Duration_t lease_duration;
00104 };
00105
00106 enum ReliabilityQosPolicyKind {
00107 BEST_EFFORT_RELIABILITY_QOS,
00108 RELIABLE_RELIABILITY_QOS
00109 };
00110
00111 struct ReliabilityQosPolicy {
00112 ReliabilityQosPolicyKind kind;
00113 Duration_t max_blocking_time;
00114 };
00115
00116 enum DestinationOrderQosPolicyKind {
00117 BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,
00118 BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
00119 };
00120
00121 struct DestinationOrderQosPolicy {
00122 DestinationOrderQosPolicyKind kind;
00123 };
00124
00125 struct HistoryQosPolicy {
00126 HistoryQosPolicyKind kind;
00127 long depth;
00128 };
00129
00130 struct ResourceLimitsQosPolicy {
00131 long max_samples;
00132 long max_instances;
00133 long max_samples_per_instance;
00134 };
00135
00136 struct TransportPriorityQosPolicy {
00137 long value;
00138 };
00139
00140 struct LifespanQosPolicy {
00141 Duration_t duration;
00142 };
00143
00144 enum OwnershipQosPolicyKind {
00145 SHARED_OWNERSHIP_QOS,
00146 EXCLUSIVE_OWNERSHIP_QOS
00147 };
00148
00149 struct OwnershipQosPolicy {
00150 OwnershipQosPolicyKind kind;
00151 };
00152
00153 struct OwnershipStrengthQosPolicy {
00154 long value;
00155 };
00156
00157 enum PresentationQosPolicyAccessScopeKind {
00158 INSTANCE_PRESENTATION_QOS,
00159 TOPIC_PRESENTATION_QOS,
00160 GROUP_PRESENTATION_QOS
00161 };
00162
00163 struct PresentationQosPolicy {
00164 PresentationQosPolicyAccessScopeKind access_scope;
00165 boolean coherent_access;
00166 boolean ordered_access;
00167 };
00168
00169 struct TimeBasedFilterQosPolicy {
00170 Duration_t minimum_separation;
00171 };
00172
00173 struct TopicQos {
00174 TopicDataQosPolicy topic_data;
00175 DurabilityQosPolicy durability;
00176 DurabilityServiceQosPolicy durability_service;
00177 DeadlineQosPolicy deadline;
00178 LatencyBudgetQosPolicy latency_budget;
00179 LivelinessQosPolicy liveliness;
00180 ReliabilityQosPolicy reliability;
00181 DestinationOrderQosPolicy destination_order;
00182 HistoryQosPolicy history;
00183 ResourceLimitsQosPolicy resource_limits;
00184 TransportPriorityQosPolicy transport_priority;
00185 LifespanQosPolicy lifespan;
00186 OwnershipQosPolicy ownership;
00187 };
00188
00189 struct WriterDataLifecycleQosPolicy {
00190 boolean autodispose_unregistered_instances;
00191 };
00192
00193 struct DataWriterQos {
00194 DurabilityQosPolicy durability;
00195 DurabilityServiceQosPolicy durability_service;
00196 DeadlineQosPolicy deadline;
00197 LatencyBudgetQosPolicy latency_budget;
00198 LivelinessQosPolicy liveliness;
00199 ReliabilityQosPolicy reliability;
00200 DestinationOrderQosPolicy destination_order;
00201 HistoryQosPolicy history;
00202 ResourceLimitsQosPolicy resource_limits;
00203 TransportPriorityQosPolicy transport_priority;
00204 LifespanQosPolicy lifespan;
00205 UserDataQosPolicy user_data;
00206 OwnershipQosPolicy ownership;
00207 OwnershipStrengthQosPolicy ownership_strength;
00208 WriterDataLifecycleQosPolicy writer_data_lifecycle;
00209 };
00210
00211 struct EntityFactoryQosPolicy {
00212 boolean autoenable_created_entities;
00213 };
00214
00215 struct PublisherQos {
00216 PresentationQosPolicy presentation;
00217 PartitionQosPolicy partition;
00218 GroupDataQosPolicy group_data;
00219 EntityFactoryQosPolicy entity_factory;
00220 };
00221
00222 struct ReaderDataLifecycleQosPolicy {
00223 Duration_t autopurge_nowriter_samples_delay;
00224 Duration_t autopurge_disposed_samples_delay;
00225 };
00226
00227 struct DataReaderQos {
00228 DurabilityQosPolicy durability;
00229 DeadlineQosPolicy deadline;
00230 LatencyBudgetQosPolicy latency_budget;
00231 LivelinessQosPolicy liveliness;
00232 ReliabilityQosPolicy reliability;
00233 DestinationOrderQosPolicy destination_order;
00234 HistoryQosPolicy history;
00235 ResourceLimitsQosPolicy resource_limits;
00236 UserDataQosPolicy user_data;
00237 OwnershipQosPolicy ownership;
00238 TimeBasedFilterQosPolicy time_based_filter;
00239 ReaderDataLifecycleQosPolicy reader_data_lifecycle;
00240 };
00241
00242 struct SubscriberQos {
00243 PresentationQosPolicy presentation;
00244 PartitionQosPolicy partition;
00245 GroupDataQosPolicy group_data;
00246 EntityFactoryQosPolicy entity_factory;
00247 };
00248
00249 struct DomainParticipantFactoryQos {
00250 EntityFactoryQosPolicy entity_factory;
00251 };
00252
00253 struct DomainParticipantQos {
00254 UserDataQosPolicy user_data;
00255 EntityFactoryQosPolicy entity_factory;
00256 };
00257
00258 struct BuiltinTopicKey_t {
00259 BuiltinTopicKeyValue value;
00260 };
00261
00262
00263 #if !defined (DDS_HAS_MINIMUM_BIT)
00264
00265 #pragma DCPS_DATA_TYPE "DDS::ParticipantBuiltinTopicData"
00266 #pragma DCPS_DATA_KEY "DDS::ParticipantBuiltinTopicData key.value[0]"
00267 #pragma DCPS_DATA_KEY "DDS::ParticipantBuiltinTopicData key.value[1]"
00268 #pragma DCPS_DATA_KEY "DDS::ParticipantBuiltinTopicData key.value[2]"
00269 #endif
00270
00271 struct ParticipantBuiltinTopicData {
00272 BuiltinTopicKey_t key;
00273 UserDataQosPolicy user_data;
00274 };
00275
00276 #if !defined (DDS_HAS_MINIMUM_BIT)
00277
00278 #pragma DCPS_DATA_TYPE "DDS::PublicationBuiltinTopicData"
00279 #pragma DCPS_DATA_KEY "DDS::PublicationBuiltinTopicData key.value[0]"
00280 #pragma DCPS_DATA_KEY "DDS::PublicationBuiltinTopicData key.value[1]"
00281 #pragma DCPS_DATA_KEY "DDS::PublicationBuiltinTopicData key.value[2]"
00282 #endif
00283 struct PublicationBuiltinTopicData {
00284 BuiltinTopicKey_t key;
00285 BuiltinTopicKey_t participant_key;
00286 string topic_name;
00287 string type_name;
00288 DurabilityQosPolicy durability;
00289 DurabilityServiceQosPolicy durability_service;
00290 DeadlineQosPolicy deadline;
00291 LatencyBudgetQosPolicy latency_budget;
00292 LivelinessQosPolicy liveliness;
00293 ReliabilityQosPolicy reliability;
00294 LifespanQosPolicy lifespan;
00295 UserDataQosPolicy user_data;
00296 OwnershipQosPolicy ownership;
00297 OwnershipStrengthQosPolicy ownership_strength;
00298 DestinationOrderQosPolicy destination_order;
00299 PresentationQosPolicy presentation;
00300 PartitionQosPolicy partition;
00301 TopicDataQosPolicy topic_data;
00302 GroupDataQosPolicy group_data;
00303 };
00304
00305 #if !defined (DDS_HAS_MINIMUM_BIT)
00306
00307 #pragma DCPS_DATA_TYPE "DDS::SubscriptionBuiltinTopicData"
00308 #pragma DCPS_DATA_KEY "DDS::SubscriptionBuiltinTopicData key.value[0]"
00309 #pragma DCPS_DATA_KEY "DDS::SubscriptionBuiltinTopicData key.value[1]"
00310 #pragma DCPS_DATA_KEY "DDS::SubscriptionBuiltinTopicData key.value[2]"
00311 #endif
00312 struct SubscriptionBuiltinTopicData {
00313 BuiltinTopicKey_t key;
00314 BuiltinTopicKey_t participant_key;
00315 string topic_name;
00316 string type_name;
00317 DurabilityQosPolicy durability;
00318 DeadlineQosPolicy deadline;
00319 LatencyBudgetQosPolicy latency_budget;
00320 LivelinessQosPolicy liveliness;
00321 ReliabilityQosPolicy reliability;
00322 OwnershipQosPolicy ownership;
00323 DestinationOrderQosPolicy destination_order;
00324 UserDataQosPolicy user_data;
00325 TimeBasedFilterQosPolicy time_based_filter;
00326 PresentationQosPolicy presentation;
00327 PartitionQosPolicy partition;
00328 TopicDataQosPolicy topic_data;
00329 GroupDataQosPolicy group_data;
00330 };
00331
00332 #if !defined (DDS_HAS_MINIMUM_BIT)
00333
00334 #pragma DCPS_DATA_TYPE "DDS::TopicBuiltinTopicData"
00335 #pragma DCPS_DATA_KEY "DDS::TopicBuiltinTopicData key.value[0]"
00336 #pragma DCPS_DATA_KEY "DDS::TopicBuiltinTopicData key.value[1]"
00337 #pragma DCPS_DATA_KEY "DDS::TopicBuiltinTopicData key.value[2]"
00338 #endif
00339
00340 struct TopicBuiltinTopicData {
00341 BuiltinTopicKey_t key;
00342 string name;
00343 string type_name;
00344 DurabilityQosPolicy durability;
00345 DurabilityServiceQosPolicy durability_service;
00346 DeadlineQosPolicy deadline;
00347 LatencyBudgetQosPolicy latency_budget;
00348 LivelinessQosPolicy liveliness;
00349 ReliabilityQosPolicy reliability;
00350 TransportPriorityQosPolicy transport_priority;
00351 LifespanQosPolicy lifespan;
00352 DestinationOrderQosPolicy destination_order;
00353 HistoryQosPolicy history;
00354 ResourceLimitsQosPolicy resource_limits;
00355 OwnershipQosPolicy ownership;
00356 TopicDataQosPolicy topic_data;
00357 };
00358
00359
00360 typedef unsigned long SampleStateKind;
00361
00362 const SampleStateKind READ_SAMPLE_STATE = 0x0001 << 0;
00363 const SampleStateKind NOT_READ_SAMPLE_STATE = 0x0001 << 1;
00364
00365
00366 typedef unsigned long SampleStateMask;
00367 const SampleStateMask ANY_SAMPLE_STATE = 0xffff;
00368
00369
00370 typedef unsigned long ViewStateKind;
00371 const ViewStateKind NEW_VIEW_STATE = 0x0001 << 0;
00372 const ViewStateKind NOT_NEW_VIEW_STATE = 0x0001 << 1;
00373
00374
00375 typedef unsigned long ViewStateMask;
00376 const ViewStateMask ANY_VIEW_STATE = 0xffff;
00377
00378
00379 typedef unsigned long InstanceStateKind;
00380 const InstanceStateKind ALIVE_INSTANCE_STATE = 0x0001 << 0;
00381 const InstanceStateKind NOT_ALIVE_DISPOSED_INSTANCE_STATE = 0x0001 << 1;
00382 const InstanceStateKind NOT_ALIVE_NO_WRITERS_INSTANCE_STATE = 0x0001 << 2;
00383
00384
00385 typedef unsigned long InstanceStateMask;
00386 const InstanceStateMask ANY_INSTANCE_STATE = 0xffff;
00387 const InstanceStateMask NOT_ALIVE_INSTANCE_STATE = 0x006;
00388
00389 struct Time_t {
00390 long sec;
00391 unsigned long nanosec;
00392 };
00393
00394 struct SampleInfo {
00395 SampleStateKind sample_state;
00396 ViewStateKind view_state;
00397 InstanceStateKind instance_state;
00398 Time_t source_timestamp;
00399 InstanceHandle_t instance_handle;
00400 InstanceHandle_t publication_handle;
00401 long disposed_generation_count;
00402 long no_writers_generation_count;
00403 long sample_rank;
00404 long generation_rank;
00405 long absolute_generation_rank;
00406 boolean valid_data;
00407 long long opendds_reserved_publication_seq;
00408 };
00409
00410 typedef sequence<SampleInfo> SampleInfoSeq;
00411
00412 };
00413
00414 #endif