DdsDcpsCore.idl

Go to the documentation of this file.
00001 /*
00002  *
00003  *
00004  * Distributed under the OpenDDS License.
00005  * See: http://www.opendds.org/license.html
00006  */
00007 
00008 #ifndef OPENDDS_DCPS_CORE_IDL
00009 #define OPENDDS_DCPS_CORE_IDL
00010 
00011 // The includes below are needed to deal with compilers that
00012 // have ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
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 // Make the IDL compiler produce include of zero-copy read info
00021 // sequence template.
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 // These pragmas are OpenDDS-specific.
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 // These pragmas are OpenDDS-specific.
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 // These pragmas are OpenDDS-specific.
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 // These pragmas are OpenDDS-specific.
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     // Sample states to support reads
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     // This is a bit-mask SampleStateKind
00366     typedef unsigned long SampleStateMask;
00367     const SampleStateMask ANY_SAMPLE_STATE = 0xffff;
00368 
00369     // View states to support reads
00370     typedef unsigned long ViewStateKind;
00371     const ViewStateKind NEW_VIEW_STATE = 0x0001 << 0;
00372     const ViewStateKind NOT_NEW_VIEW_STATE = 0x0001 << 1;
00373 
00374     // This is a bit-mask ViewStateKind
00375     typedef unsigned long ViewStateMask;
00376     const ViewStateMask ANY_VIEW_STATE = 0xffff;
00377 
00378     // Instance states to support reads
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     // This is a bit-mask InstanceStateKind
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  /* OPENDDS_DCPS_CORE_IDL */

Generated on Fri Feb 12 20:05:22 2016 for OpenDDS by  doxygen 1.4.7