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     const long            DURATION_INFINITE_SEC   = 0x7fffffff;
00047     const unsigned long   DURATION_INFINITE_NSEC  = 0x7fffffff;
00048 
00049     const long DURATION_ZERO_SEC = 0;
00050     const unsigned long DURATION_ZERO_NSEC = 0;
00051 
00052     // Property_t, PropertySeq, BinaryProperty_t, BinaryPropertySeq, and PropertyQosPolicy
00053     // are all part of the security specification (ptc/2017-09-26).
00054     // These structs/typedefs are in this file to satisfy dependencies for
00055     // DomainParticipantQos (which was extended in the security specification).
00056     struct Property_t {
00057       string name;
00058       string value;
00059       boolean propagate;
00060     };
00061     typedef sequence<Property_t> PropertySeq;
00062 
00063     struct BinaryProperty_t {
00064       string name;
00065       OctetSeq value;
00066       boolean propagate;
00067     };
00068     typedef sequence<BinaryProperty_t> BinaryPropertySeq;
00069 
00070     //@extensibility(APPENDABLE)
00071     struct PropertyQosPolicy {
00072         PropertySeq        value;
00073         BinaryPropertySeq  binary_value;
00074     };
00075 
00076     struct UserDataQosPolicy {
00077                 OctetSeq value;
00078                 };
00079 
00080     struct GroupDataQosPolicy {
00081                 OctetSeq value;
00082                 };
00083 
00084     struct TopicDataQosPolicy {
00085                 OctetSeq value;
00086                 };
00087 
00088     struct PartitionQosPolicy {
00089                 StringSeq name;
00090                 };
00091 
00092     enum HistoryQosPolicyKind {
00093                 KEEP_LAST_HISTORY_QOS,
00094                 KEEP_ALL_HISTORY_QOS
00095                 };
00096 
00097     enum DurabilityQosPolicyKind {
00098                 VOLATILE_DURABILITY_QOS,
00099                 TRANSIENT_LOCAL_DURABILITY_QOS,
00100                 TRANSIENT_DURABILITY_QOS,
00101                 PERSISTENT_DURABILITY_QOS
00102                 };
00103 
00104     struct DurabilityQosPolicy {
00105                 DurabilityQosPolicyKind kind;
00106                 };
00107 
00108     struct DurabilityServiceQosPolicy {
00109         Duration_t              service_cleanup_delay;
00110         HistoryQosPolicyKind    history_kind;
00111         long                    history_depth;
00112         long                    max_samples;
00113         long                    max_instances;
00114         long                    max_samples_per_instance;
00115     };
00116 
00117     struct DeadlineQosPolicy {
00118                 Duration_t period;
00119                 };
00120 
00121     struct LatencyBudgetQosPolicy {
00122                 Duration_t duration;
00123                 };
00124 
00125     enum LivelinessQosPolicyKind {
00126                 AUTOMATIC_LIVELINESS_QOS,
00127                 MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
00128                 MANUAL_BY_TOPIC_LIVELINESS_QOS
00129                 };
00130 
00131     struct LivelinessQosPolicy {
00132                 LivelinessQosPolicyKind kind;
00133                 Duration_t lease_duration;
00134                 };
00135 
00136     enum ReliabilityQosPolicyKind {
00137                 BEST_EFFORT_RELIABILITY_QOS,
00138                 RELIABLE_RELIABILITY_QOS
00139                 };
00140 
00141     struct ReliabilityQosPolicy {
00142                 ReliabilityQosPolicyKind kind;
00143                 Duration_t max_blocking_time;
00144                 };
00145 
00146     enum DestinationOrderQosPolicyKind {
00147                 BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,
00148                 BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
00149                 };
00150 
00151     struct DestinationOrderQosPolicy {
00152                 DestinationOrderQosPolicyKind kind;
00153                 };
00154 
00155     struct HistoryQosPolicy {
00156                 HistoryQosPolicyKind kind;
00157                 long depth;
00158                 };
00159 
00160     struct ResourceLimitsQosPolicy {
00161                 long max_samples;
00162                 long max_instances;
00163                 long max_samples_per_instance;
00164                 };
00165 
00166     struct TransportPriorityQosPolicy {
00167                 long value;
00168                 };
00169 
00170     struct LifespanQosPolicy {
00171                 Duration_t duration;
00172                 };
00173 
00174     enum OwnershipQosPolicyKind {
00175                 SHARED_OWNERSHIP_QOS,
00176                 EXCLUSIVE_OWNERSHIP_QOS
00177                 };
00178 
00179     struct OwnershipQosPolicy {
00180                 OwnershipQosPolicyKind kind;
00181                 };
00182 
00183     struct OwnershipStrengthQosPolicy {
00184                 long value;
00185                 };
00186 
00187     enum PresentationQosPolicyAccessScopeKind {
00188                 INSTANCE_PRESENTATION_QOS,
00189                 TOPIC_PRESENTATION_QOS,
00190                 GROUP_PRESENTATION_QOS
00191                 };
00192 
00193     struct PresentationQosPolicy {
00194                 PresentationQosPolicyAccessScopeKind access_scope;
00195                 boolean coherent_access;
00196                 boolean ordered_access;
00197                 };
00198 
00199     struct TimeBasedFilterQosPolicy {
00200                 Duration_t minimum_separation;
00201                 };
00202 
00203     struct TopicQos {
00204                 TopicDataQosPolicy topic_data;
00205                 DurabilityQosPolicy durability;
00206                 DurabilityServiceQosPolicy durability_service;
00207                 DeadlineQosPolicy deadline;
00208                 LatencyBudgetQosPolicy latency_budget;
00209                 LivelinessQosPolicy liveliness;
00210                 ReliabilityQosPolicy reliability;
00211                 DestinationOrderQosPolicy destination_order;
00212                 HistoryQosPolicy history;
00213                 ResourceLimitsQosPolicy resource_limits;
00214                 TransportPriorityQosPolicy transport_priority;
00215                 LifespanQosPolicy lifespan;
00216                 OwnershipQosPolicy ownership;
00217                 };
00218 
00219     struct WriterDataLifecycleQosPolicy {
00220                 boolean autodispose_unregistered_instances;
00221                 };
00222 
00223     struct DataWriterQos {
00224                 DurabilityQosPolicy durability;
00225                 DurabilityServiceQosPolicy durability_service;
00226                 DeadlineQosPolicy deadline;
00227                 LatencyBudgetQosPolicy latency_budget;
00228                 LivelinessQosPolicy liveliness;
00229                 ReliabilityQosPolicy reliability;
00230                 DestinationOrderQosPolicy destination_order;
00231                 HistoryQosPolicy history;
00232                 ResourceLimitsQosPolicy resource_limits;
00233                 TransportPriorityQosPolicy transport_priority;
00234                 LifespanQosPolicy lifespan;
00235                 UserDataQosPolicy user_data;
00236                 OwnershipQosPolicy ownership;
00237                 OwnershipStrengthQosPolicy ownership_strength;
00238                 WriterDataLifecycleQosPolicy writer_data_lifecycle;
00239                 };
00240 
00241     struct EntityFactoryQosPolicy {
00242                 boolean autoenable_created_entities;
00243                 };
00244 
00245     struct PublisherQos {
00246                 PresentationQosPolicy presentation;
00247                 PartitionQosPolicy partition;
00248                 GroupDataQosPolicy group_data;
00249                 EntityFactoryQosPolicy entity_factory;
00250                 };
00251 
00252     struct ReaderDataLifecycleQosPolicy {
00253                 Duration_t autopurge_nowriter_samples_delay;
00254                 Duration_t autopurge_disposed_samples_delay;
00255                 };
00256 
00257     struct DataReaderQos {
00258                 DurabilityQosPolicy durability;
00259                 DeadlineQosPolicy deadline;
00260                 LatencyBudgetQosPolicy latency_budget;
00261                 LivelinessQosPolicy liveliness;
00262                 ReliabilityQosPolicy reliability;
00263                 DestinationOrderQosPolicy destination_order;
00264                 HistoryQosPolicy history;
00265                 ResourceLimitsQosPolicy resource_limits;
00266                 UserDataQosPolicy user_data;
00267                 OwnershipQosPolicy ownership;
00268                 TimeBasedFilterQosPolicy time_based_filter;
00269                 ReaderDataLifecycleQosPolicy reader_data_lifecycle;
00270                 };
00271 
00272     struct SubscriberQos {
00273                 PresentationQosPolicy presentation;
00274                 PartitionQosPolicy partition;
00275                 GroupDataQosPolicy group_data;
00276                 EntityFactoryQosPolicy entity_factory;
00277                 };
00278 
00279     struct DomainParticipantFactoryQos {
00280                 EntityFactoryQosPolicy entity_factory;
00281                 };
00282 
00283     struct DomainParticipantQos {
00284                 UserDataQosPolicy user_data;
00285                 EntityFactoryQosPolicy entity_factory;
00286                 PropertyQosPolicy property; // DDS-Security 1.1 ptc/2017-09-26
00287                 };
00288 
00289     struct BuiltinTopicKey_t {
00290                 BuiltinTopicKeyValue value;
00291                 };
00292 
00293     // ----------------------------------------------------------------------
00294 #if !defined (DDS_HAS_MINIMUM_BIT)
00295 // These pragmas are OpenDDS-specific.
00296 #pragma DCPS_DATA_TYPE "DDS::ParticipantBuiltinTopicData"
00297 #pragma DCPS_DATA_KEY  "DDS::ParticipantBuiltinTopicData key.value[0]"
00298 #pragma DCPS_DATA_KEY  "DDS::ParticipantBuiltinTopicData key.value[1]"
00299 #pragma DCPS_DATA_KEY  "DDS::ParticipantBuiltinTopicData key.value[2]"
00300 #endif
00301 
00302     struct ParticipantBuiltinTopicData {
00303       BuiltinTopicKey_t key;
00304       UserDataQosPolicy user_data;
00305     };
00306 
00307 #if !defined (DDS_HAS_MINIMUM_BIT)
00308 // These pragmas are OpenDDS-specific.
00309 #pragma DCPS_DATA_TYPE "DDS::PublicationBuiltinTopicData"
00310 #pragma DCPS_DATA_KEY  "DDS::PublicationBuiltinTopicData key.value[0]"
00311 #pragma DCPS_DATA_KEY  "DDS::PublicationBuiltinTopicData key.value[1]"
00312 #pragma DCPS_DATA_KEY  "DDS::PublicationBuiltinTopicData key.value[2]"
00313 #endif
00314     struct PublicationBuiltinTopicData {
00315                 BuiltinTopicKey_t key;
00316                 BuiltinTopicKey_t participant_key;
00317                 string topic_name;
00318                 string type_name;
00319                 DurabilityQosPolicy durability;
00320                 DurabilityServiceQosPolicy durability_service;
00321                 DeadlineQosPolicy deadline;
00322                 LatencyBudgetQosPolicy latency_budget;
00323                 LivelinessQosPolicy liveliness;
00324                 ReliabilityQosPolicy reliability;
00325                 LifespanQosPolicy lifespan;
00326                 UserDataQosPolicy user_data;
00327                 OwnershipQosPolicy ownership;
00328                 OwnershipStrengthQosPolicy ownership_strength;
00329                 DestinationOrderQosPolicy destination_order;
00330                 PresentationQosPolicy presentation;
00331                 PartitionQosPolicy partition;
00332                 TopicDataQosPolicy topic_data;
00333                 GroupDataQosPolicy group_data;
00334                 };
00335 
00336 #if !defined (DDS_HAS_MINIMUM_BIT)
00337 // These pragmas are OpenDDS-specific.
00338 #pragma DCPS_DATA_TYPE "DDS::SubscriptionBuiltinTopicData"
00339 #pragma DCPS_DATA_KEY  "DDS::SubscriptionBuiltinTopicData key.value[0]"
00340 #pragma DCPS_DATA_KEY  "DDS::SubscriptionBuiltinTopicData key.value[1]"
00341 #pragma DCPS_DATA_KEY  "DDS::SubscriptionBuiltinTopicData key.value[2]"
00342 #endif
00343     struct SubscriptionBuiltinTopicData {
00344                 BuiltinTopicKey_t key;
00345                 BuiltinTopicKey_t participant_key;
00346                 string topic_name;
00347                 string type_name;
00348                 DurabilityQosPolicy durability;
00349                 DeadlineQosPolicy deadline;
00350                 LatencyBudgetQosPolicy latency_budget;
00351                 LivelinessQosPolicy liveliness;
00352                 ReliabilityQosPolicy reliability;
00353                 OwnershipQosPolicy ownership;
00354                 DestinationOrderQosPolicy destination_order;
00355                 UserDataQosPolicy user_data;
00356                 TimeBasedFilterQosPolicy time_based_filter;
00357                 PresentationQosPolicy presentation;
00358                 PartitionQosPolicy partition;
00359                 TopicDataQosPolicy topic_data;
00360                 GroupDataQosPolicy group_data;
00361                 };
00362 
00363 #if !defined (DDS_HAS_MINIMUM_BIT)
00364 // These pragmas are OpenDDS-specific.
00365 #pragma DCPS_DATA_TYPE "DDS::TopicBuiltinTopicData"
00366 #pragma DCPS_DATA_KEY  "DDS::TopicBuiltinTopicData key.value[0]"
00367 #pragma DCPS_DATA_KEY  "DDS::TopicBuiltinTopicData key.value[1]"
00368 #pragma DCPS_DATA_KEY  "DDS::TopicBuiltinTopicData key.value[2]"
00369 #endif
00370 
00371     struct TopicBuiltinTopicData {
00372                 BuiltinTopicKey_t key;
00373                 string name;
00374                 string type_name;
00375                 DurabilityQosPolicy durability;
00376                 DurabilityServiceQosPolicy durability_service;
00377                 DeadlineQosPolicy deadline;
00378                 LatencyBudgetQosPolicy latency_budget;
00379                 LivelinessQosPolicy liveliness;
00380                 ReliabilityQosPolicy reliability;
00381                 TransportPriorityQosPolicy transport_priority;
00382                 LifespanQosPolicy lifespan;
00383                 DestinationOrderQosPolicy destination_order;
00384                 HistoryQosPolicy history;
00385                 ResourceLimitsQosPolicy resource_limits;
00386                 OwnershipQosPolicy ownership;
00387                 TopicDataQosPolicy topic_data;
00388                 };
00389 
00390     // Sample states to support reads
00391     typedef unsigned long SampleStateKind;
00392 
00393     const SampleStateKind READ_SAMPLE_STATE = 0x0001 << 0;
00394     const SampleStateKind NOT_READ_SAMPLE_STATE = 0x0001 << 1;
00395 
00396     // This is a bit-mask SampleStateKind
00397     typedef unsigned long SampleStateMask;
00398     const SampleStateMask ANY_SAMPLE_STATE = 0xffff;
00399 
00400     // View states to support reads
00401     typedef unsigned long ViewStateKind;
00402     const ViewStateKind NEW_VIEW_STATE = 0x0001 << 0;
00403     const ViewStateKind NOT_NEW_VIEW_STATE = 0x0001 << 1;
00404 
00405     // This is a bit-mask ViewStateKind
00406     typedef unsigned long ViewStateMask;
00407     const ViewStateMask ANY_VIEW_STATE = 0xffff;
00408 
00409     // Instance states to support reads
00410     typedef unsigned long InstanceStateKind;
00411     const InstanceStateKind ALIVE_INSTANCE_STATE = 0x0001 << 0;
00412     const InstanceStateKind NOT_ALIVE_DISPOSED_INSTANCE_STATE   = 0x0001 << 1;
00413     const InstanceStateKind NOT_ALIVE_NO_WRITERS_INSTANCE_STATE = 0x0001 << 2;
00414 
00415     // This is a bit-mask InstanceStateKind
00416     typedef unsigned long InstanceStateMask;
00417     const InstanceStateMask ANY_INSTANCE_STATE                  = 0xffff;
00418     const InstanceStateMask NOT_ALIVE_INSTANCE_STATE            = 0x006;
00419 
00420     struct Time_t {
00421                 long sec;
00422                 unsigned long nanosec;
00423                 };
00424 
00425     const long            TIME_INVALID_SEC        = -1;
00426     const unsigned long   TIME_INVALID_NSEC       = 0xffffffff;
00427 
00428     struct SampleInfo {
00429                 SampleStateKind sample_state;
00430                 ViewStateKind view_state;
00431                 InstanceStateKind instance_state;
00432                 Time_t source_timestamp;
00433                 InstanceHandle_t instance_handle;
00434                 InstanceHandle_t publication_handle;
00435                 long disposed_generation_count;
00436                 long no_writers_generation_count;
00437                 long sample_rank;
00438                 long generation_rank;
00439                 long absolute_generation_rank;
00440                 boolean valid_data;
00441                 long long opendds_reserved_publication_seq;
00442                 };
00443 
00444   typedef sequence<SampleInfo> SampleInfoSeq;
00445 
00446 };
00447 
00448 #endif  /* OPENDDS_DCPS_CORE_IDL */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1