00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _DDS_HH
00024 #define _DDS_HH
00025
00026 #include <dds/dds.h>
00027 #include <dds/coredx_transport.h>
00028 #include <dds/dds_seq.hh>
00123 namespace DDS
00124 {
00125
00126
00127
00128 class Entity;
00129 class DomainEntity;
00130 class DomainParticipantFactory;
00131 class DomainParticipant;
00132 class Publisher;
00133 class Subscriber;
00134 class DataReader;
00135 class DataWriter;
00136 class TopicDescription;
00137 class Topic;
00138 class ContentFilteredTopic;
00139 class Listener;
00140 class DomainParticipantListener;
00141 class PublisherListener;
00142 class SubscriberListener;
00143 class TopicListener;
00144 class DataReaderListener;
00145 class DataWriterListener;
00146 class Condition;
00147 class GuardCondition;
00148 class StatusCondition;
00149 class ReadCondition;
00150 class QueryCondition;
00151 class TypeSupport;
00152
00153
00154
00155
00156 typedef struct DDS_InconsistentTopicStatus InconsistentTopicStatus;
00157 typedef struct DDS_SampleLostStatus SampleLostStatus;
00158 typedef struct DDS_SampleRejectedStatus SampleRejectedStatus;
00159 typedef struct DDS_LivelinessLostStatus LivelinessLostStatus;
00160 typedef struct DDS_LivelinessChangedStatus LivelinessChangedStatus;
00161 typedef struct DDS_OfferedDeadlineMissedStatus OfferedDeadlineMissedStatus;
00162 typedef struct DDS_RequestedDeadlineMissedStatus RequestedDeadlineMissedStatus;
00163 typedef struct DDS_QosPolicyCount QosPolicyCount;
00164 typedef struct DDS_OfferedIncompatibleQosStatus OfferedIncompatibleQosStatus;
00165 typedef struct DDS_RequestedIncompatibleQosStatus RequestedIncompatibleQosStatus;
00166 typedef struct DDS_PublicationMatchedStatus PublicationMatchedStatus;
00167 typedef struct DDS_SubscriptionMatchedStatus SubscriptionMatchedStatus;
00168
00169
00170
00171
00172 typedef unsigned char Octet;
00173 typedef DDS_DOMAINID_TYPE_NATIVE DomainId_t;
00174 typedef DDS_HANDLE_TYPE_NATIVE InstanceHandle_t;
00175 typedef long ReturnCode_t;
00176 typedef long QosPolicyId_t;
00177 typedef unsigned long SampleStateKind;
00178 typedef unsigned long SampleStateMask;
00179 typedef unsigned long ViewStateKind;
00180 typedef unsigned long ViewStateMask;
00181 typedef unsigned long InstanceStateKind;
00182 typedef unsigned long InstanceStateMask;
00183 typedef unsigned long StatusKind;
00184 typedef unsigned long StatusMask;
00185
00189 typedef struct DDS_Duration_t Duration_t;
00190
00194 typedef struct DDS_Time_t Time_t;
00195
00199 typedef struct DDS_SampleInfo SampleInfo;
00200
00201 struct BuiltinTopicKey_t {
00202 DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE value[3];
00203 void copy(const BuiltinTopicKey_t * from);
00204 };
00205
00206 typedef struct DCPSParticipant ParticipantBuiltinTopicData;
00207 typedef struct DCPSTopic TopicBuiltinTopicData;
00208 typedef struct DCPSPublication PublicationBuiltinTopicData;
00209 typedef struct DCPSSubscription SubscriptionBuiltinTopicData;
00210
00211
00212
00213
00215 typedef DDS::sequence<unsigned char> OctetSeq;
00217 typedef DDS::sequence<SampleInfo *> SampleInfoSeq;
00219 typedef DDS::sequence<DataReader *> DataReaderSeq;
00221 typedef DDS::sequence<InstanceHandle_t> InstanceHandleSeq;
00223 typedef DDS::sequence<Condition *> ConditionSeq;
00225 typedef DDS::sequence<char *> StringSeq;
00227 typedef DDS::sequence<void *> Sequence;
00228
00229
00230
00231
00245 typedef struct UserDataQosPolicy {
00246 OctetSeq value;
00247 void copy(const UserDataQosPolicy * from);
00248 void clear();
00249 } UserDataQosPolicy;
00250
00264 typedef struct TopicDataQosPolicy {
00265 OctetSeq value;
00266 void copy(const TopicDataQosPolicy * from);
00267 void clear();
00268 } TopicDataQosPolicy;
00269
00284 typedef struct GroupDataQosPolicy {
00285 OctetSeq value;
00286 void copy(const GroupDataQosPolicy * from);
00287 void clear();
00288 } GroupDataQosPolicy;
00289
00294 typedef struct TransportPriorityQosPolicy {
00295 long value;
00296 void copy(const TransportPriorityQosPolicy * from);
00297 } TransportPriorityQosPolicy;
00298
00306 typedef struct LifespanQosPolicy {
00307 Duration_t duration;
00308 void copy(const LifespanQosPolicy * from);
00309 } LifespanQosPolicy;
00310
00314 typedef enum DurabilityQosPolicyKind {
00315 VOLATILE_DURABILITY_QOS,
00316 TRANSIENT_LOCAL_DURABILITY_QOS,
00317 TRANSIENT_DURABILITY_QOS,
00318 PERSISTENT_DURABILITY_QOS
00319 } DurabilityQosPolicyKind;
00320
00347 typedef struct DurabilityQosPolicy {
00348 DurabilityQosPolicyKind kind;
00349 void copy(const DurabilityQosPolicy * from);
00350 } DurabilityQosPolicy;
00351
00355 typedef enum PresentationQosPolicyAccessScopeKind {
00356 INSTANCE_PRESENTATION_QOS,
00357 TOPIC_PRESENTATION_QOS,
00358 GROUP_PRESENTATION_QOS
00359 } PresentationQosPolicyAccessScopeKind;
00360
00366 typedef struct PresentationQosPolicy {
00371 PresentationQosPolicyAccessScopeKind access_scope;
00375 unsigned char coherent_access;
00379 unsigned char ordered_access;
00380 void copy(const PresentationQosPolicy * from);
00381 } PresentationQosPolicy;
00382
00402 typedef struct DeadlineQosPolicy {
00403 Duration_t period;
00404 void copy(const DeadlineQosPolicy * from);
00405 } DeadlineQosPolicy;
00406
00421 typedef struct LatencyBudgetQosPolicy {
00422 Duration_t duration;
00423 void copy(const LatencyBudgetQosPolicy * from);
00424 } LatencyBudgetQosPolicy;
00425
00429 typedef enum OwnershipQosPolicyKind {
00430 SHARED_OWNERSHIP_QOS,
00431 EXCLUSIVE_OWNERSHIP_QOS
00432 } OwnershipQosPolicyKind;
00433
00438 typedef struct OwnershipQosPolicy {
00439 OwnershipQosPolicyKind kind;
00440 void copy(const OwnershipQosPolicy * from);
00441 } OwnershipQosPolicy;
00442
00451 typedef struct OwnershipStrengthQosPolicy {
00452 long value;
00453 void copy(const OwnershipStrengthQosPolicy * from);
00454 } OwnershipStrengthQosPolicy;
00455
00459 typedef enum LivelinessQosPolicyKind {
00460 AUTOMATIC_LIVELINESS_QOS,
00461 MANUAL_BY_PARTICIPANT_LIVELINESS_QOS,
00462 MANUAL_BY_TOPIC_LIVELINESS_QOS
00463 } LivelinessQosPolicyKind;
00464
00494 typedef struct LivelinessQosPolicy {
00495 LivelinessQosPolicyKind kind;
00496 Duration_t lease_duration;
00497 void copy(const LivelinessQosPolicy * from);
00498 } LivelinessQosPolicy;
00499
00510 typedef struct TimeBasedFilterQosPolicy {
00511 Duration_t minimum_separation;
00512 void copy(const TimeBasedFilterQosPolicy * from);
00513 } TimeBasedFilterQosPolicy;
00514
00544 typedef struct PartitionQosPolicy {
00545 StringSeq name;
00546 void copy(const PartitionQosPolicy * from);
00547 void clear();
00548 } PartitionQosPolicy;
00549
00554 typedef enum ReliabilityQosPolicyKind {
00555 DDS_RELIABILITY_PLACEHOLDER_QOS,
00556 BEST_EFFORT_RELIABILITY_QOS,
00557 RELIABLE_RELIABILITY_QOS
00558 } ReliabilityQosPolicyKind;
00559
00581 typedef struct ReliabilityQosPolicy {
00582 ReliabilityQosPolicyKind kind;
00583 Duration_t max_blocking_time;
00584 void copy(const ReliabilityQosPolicy * from);
00585 } ReliabilityQosPolicy;
00586
00590 typedef enum DestinationOrderQosPolicyKind {
00591 BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,
00592 BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS
00593 } DestinationOrderQosPolicyKind;
00594
00605 typedef struct DestinationOrderQosPolicy {
00606 DestinationOrderQosPolicyKind kind;
00607 void copy(const DestinationOrderQosPolicy * from);
00608 } DestinationOrderQosPolicy;
00609
00613 typedef enum HistoryQosPolicyKind {
00614 KEEP_LAST_HISTORY_QOS,
00615 KEEP_ALL_HISTORY_QOS
00617 } HistoryQosPolicyKind;
00618
00642 typedef struct HistoryQosPolicy {
00643 HistoryQosPolicyKind kind;
00644 long depth;
00645 void copy(const HistoryQosPolicy * from);
00646 } HistoryQosPolicy;
00647
00656 typedef struct ResourceLimitsQosPolicy {
00657 long max_samples;
00658 long max_instances;
00659 long max_samples_per_instance;
00660 void copy(const ResourceLimitsQosPolicy * from);
00661 } ResourceLimitsQosPolicy;
00662
00677 typedef struct EntityFactoryQosPolicy {
00678 unsigned char autoenable_created_entities;
00679 void copy(const EntityFactoryQosPolicy * from);
00680 } EntityFactoryQosPolicy;
00681
00691 typedef struct WriterDataLifecycleQosPolicy {
00692 unsigned char autodispose_unregistered_instances;
00693 void copy(const WriterDataLifecycleQosPolicy * from);
00694 } WriterDataLifecycleQosPolicy;
00695
00703 typedef struct ReaderDataLifecycleQosPolicy {
00704 Duration_t autopurge_nowriter_samples_delay;
00705 Duration_t autopurge_disposed_samples_delay;
00706 void copy(const ReaderDataLifecycleQosPolicy * from);
00707 } ReaderDataLifecycleQosPolicy;
00708
00732 typedef struct DurabilityServiceQosPolicy {
00733 Duration_t service_cleanup_delay;
00734 HistoryQosPolicyKind history_kind;
00735 long history_depth;
00736 long max_samples;
00737 long max_instances;
00738 long max_samples_per_instance;
00739 void copy(const DurabilityServiceQosPolicy * from);
00740 } DurabilityServiceQosPolicy;
00741
00742
00743
00744
00751 typedef struct EntityNameQosPolicy {
00752 char value[COREDX_ENTITY_NAME_MAX];
00753 } EntityNameQosPolicy;
00754
00767 typedef struct LoggingQosPolicy {
00768 unsigned int flags;
00769
00770
00771
00772
00773
00774
00775 char uri[COREDX_LOGGING_URI_MAX];
00776 } LoggingQosPolicy;
00777
00783 typedef struct Locator_t {
00784 int kind;
00785 unsigned int port;
00786 unsigned char addr[16];
00787 } Locator;
00788
00792 typedef struct ParticipantLocator_t {
00793 unsigned int participant_id;
00794 unsigned int participant_id_max;
00795 Locator participant_locator;
00796 } ParticipantLocator;
00797
00798 typedef sequence<ParticipantLocator> ParticipantLocatorSeq;
00799
00805 typedef struct PeerParticipantQosPolicy_t {
00806 ParticipantLocatorSeq value;
00807 } PeerParticipantQosPolicy;
00808
00812 typedef struct TypecodeQosPolicy {
00813 OctetSeq value;
00814 unsigned char encoding;
00815 void copy(const TypecodeQosPolicy * from);
00816 void clear();
00817 } TypecodeQosPolicy;
00818
00822 typedef struct RTPSWriterQosPolicy {
00823 Duration_t heartbeat_period;
00824 Duration_t nack_response_delay;
00825 Duration_t nack_suppress_delay;
00826 DDS_Duration_t ack_deadline;
00827 unsigned int min_buffer_size;
00828 unsigned int max_buffer_size;
00829 unsigned char apply_filters;
00830 unsigned char enable_batch_msg;
00831 unsigned char send_typecode;
00832 } RTPSWriterQosPolicy;
00833
00837 typedef struct RTPSReaderQosPolicy {
00838 Duration_t heartbeat_response_delay;
00839 unsigned char accept_batch_msg;
00840 unsigned char send_typecode;
00841 unsigned char send_initial_nack;
00842 unsigned int precache_max_samples;
00843 } RTPSReaderQosPolicy;
00844
00848 typedef enum DiscoveryQosPolicyDiscoveryKind {
00849 PEER_DISCOVERY_QOS,
00850 CENTRAL_DISCOVERY_QOS
00851 } DiscoveryQosPolicyDiscoveryKind;
00852
00857 typedef struct DiscoveryQosPolicy {
00858 DiscoveryQosPolicyDiscoveryKind discovery_kind;
00859 DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE guid_pid;
00860 Duration_t dpd_push_period;
00861 Duration_t dpd_lease_duration;
00862 Duration_t heartbeat_period;
00863 Duration_t nack_response_delay;
00864 Duration_t nack_suppress_delay;
00865 unsigned int min_buffer_size;
00866 unsigned int max_buffer_size;
00867 Duration_t heartbeat_response_delay;
00868 unsigned char send_initial_nack;
00869 unsigned char send_msglen_submsg;
00870 } DiscoveryQosPolicy;
00871
00875 typedef struct ThreadModelQosPolicy {
00876 unsigned char use_threads;
00877 unsigned char create_listener_thread;
00878 } ThreadModelQosPolicy;
00879
00880
00881
00882
00883
00890 typedef struct COREDX_CPP_CLASS_API DomainParticipantFactoryQos {
00894 EntityFactoryQosPolicy entity_factory;
00895
00896 DomainParticipantFactoryQos();
00897 private:
00898 DomainParticipantFactoryQos( const DomainParticipantFactoryQos & q );
00899 DomainParticipantFactoryQos & operator=( const DomainParticipantFactoryQos & rhs );
00900 } DomainParticipantFactoryQos;
00901
00911 typedef struct COREDX_CPP_CLASS_API DomainParticipantQos {
00912 UserDataQosPolicy user_data;
00913 EntityFactoryQosPolicy entity_factory;
00914 EntityNameQosPolicy entity_name;
00915 LoggingQosPolicy logging;
00916 PeerParticipantQosPolicy peer_participants;
00917 DiscoveryQosPolicy discovery;
00918 ThreadModelQosPolicy thread_model;
00920 DomainParticipantQos();
00921 private:
00922 DomainParticipantQos( const DomainParticipantQos & q );
00923 DomainParticipantQos & operator=( const DomainParticipantQos & rhs );
00924 } DomainParticipantQos;
00925
00935 class COREDX_CPP_CLASS_API TopicQos
00936 {
00937 public:
00938 TopicDataQosPolicy topic_data;
00939 DurabilityQosPolicy durability;
00940 DurabilityServiceQosPolicy durability_service;
00941 DeadlineQosPolicy deadline;
00942 LatencyBudgetQosPolicy latency_budget;
00943 LivelinessQosPolicy liveliness;
00944 ReliabilityQosPolicy reliability;
00945 DestinationOrderQosPolicy destination_order;
00946 HistoryQosPolicy history;
00947 ResourceLimitsQosPolicy resource_limits;
00948 TransportPriorityQosPolicy transport_priority;
00949 LifespanQosPolicy lifespan;
00950 OwnershipQosPolicy ownership;
00951 EntityNameQosPolicy entity_name;
00952 LoggingQosPolicy logging;
00954 TopicQos();
00955 private:
00956 TopicQos( const TopicQos & q );
00957 TopicQos & operator=( const TopicQos & rhs );
00958 };
00959
00970 class COREDX_CPP_CLASS_API DataWriterQos
00971 {
00972 public:
00973 DurabilityQosPolicy durability;
00974 DurabilityServiceQosPolicy durability_service;
00975 DeadlineQosPolicy deadline;
00976 LatencyBudgetQosPolicy latency_budget;
00977 LivelinessQosPolicy liveliness;
00978 ReliabilityQosPolicy reliability;
00979 DestinationOrderQosPolicy destination_order;
00980 HistoryQosPolicy history;
00981 ResourceLimitsQosPolicy resource_limits;
00982 TransportPriorityQosPolicy transport_priority;
00983 LifespanQosPolicy lifespan;
00984 UserDataQosPolicy user_data;
00985 OwnershipQosPolicy ownership;
00986 OwnershipStrengthQosPolicy ownership_strength;
00987 WriterDataLifecycleQosPolicy writer_data_lifecycle;
00988 EntityNameQosPolicy entity_name;
00989 LoggingQosPolicy logging;
00990 RTPSWriterQosPolicy rtps_writer;
00992 DataWriterQos();
00993 private:
00994 DataWriterQos( const DataWriterQos & q );
00995 DataWriterQos & operator=( const DataWriterQos & rhs );
00996 };
00997
01007 class COREDX_CPP_CLASS_API PublisherQos
01008 {
01009 public:
01010 PresentationQosPolicy presentation;
01018 PartitionQosPolicy partition;
01026 GroupDataQosPolicy group_data;
01027 EntityFactoryQosPolicy entity_factory;
01028 EntityNameQosPolicy entity_name;
01029 LoggingQosPolicy logging;
01031 PublisherQos();
01032 private:
01033 PublisherQos( const PublisherQos & q );
01034 PublisherQos & operator=( const PublisherQos & rhs );
01035 };
01036
01047 class COREDX_CPP_CLASS_API DataReaderQos
01048 {
01049 public:
01050 DurabilityQosPolicy durability;
01051 DeadlineQosPolicy deadline;
01052 LatencyBudgetQosPolicy latency_budget;
01053 LivelinessQosPolicy liveliness;
01054 ReliabilityQosPolicy reliability;
01055 DestinationOrderQosPolicy destination_order;
01056 HistoryQosPolicy history;
01057 ResourceLimitsQosPolicy resource_limits;
01058 UserDataQosPolicy user_data;
01059 OwnershipQosPolicy ownership;
01060 TimeBasedFilterQosPolicy time_based_filter;
01061 ReaderDataLifecycleQosPolicy reader_data_lifecycle;
01062 EntityNameQosPolicy entity_name;
01063 LoggingQosPolicy logging;
01064 RTPSReaderQosPolicy rtps_reader;
01066 DataReaderQos();
01067 private:
01068 DataReaderQos( const DataReaderQos & q );
01069 DataReaderQos & operator=( const DataReaderQos & rhs );
01070 };
01071
01082 class COREDX_CPP_CLASS_API SubscriberQos
01083 {
01084 public:
01085 PresentationQosPolicy presentation;
01093 PartitionQosPolicy partition;
01101 GroupDataQosPolicy group_data;
01102 EntityFactoryQosPolicy entity_factory;
01103 EntityNameQosPolicy entity_name;
01104 LoggingQosPolicy logging;
01106 SubscriberQos();
01107 private:
01108 SubscriberQos( const SubscriberQos & q );
01109 SubscriberQos & operator=( const SubscriberQos & rhs );
01110 };
01111
01112
01113
01114
01115
01116
01117 const long LENGTH_UNLIMITED = DDS_LENGTH_UNLIMITED;
01118 const long DURATION_INFINITE_SEC = DDS_DURATION_INFINITE_SEC;
01119 const unsigned long DURATION_INFINITE_NSEC = DDS_DURATION_INFINITE_NSEC;
01120 const long DURATION_ZERO_SEC = DDS_DURATION_ZERO_SEC;
01121 const unsigned long DURATION_ZERO_NSEC = DDS_DURATION_ZERO_NSEC;
01122 const long TIMESTAMP_INVALID_SEC = DDS_TIMESTAMP_INVALID_SEC;
01123 const unsigned long TIMESTAMP_INVALID_NSEC = DDS_TIMESTAMP_INVALID_NSEC;
01124
01125 #define TIMESTAMP_INVALID { DDS_TIMESTAMP_INVALID_SEC, DDS_TIMESTAMP_INVALID_NSEC }
01126
01127
01128 const InstanceHandle_t HANDLE_NIL = DDS_HANDLE_NIL;
01129 const InstanceHandle_t HANDLE_DEFAULT = DDS_HANDLE_DEFAULT;
01130 const InstanceHandle_t HANDLE_NOT_ENABLED = DDS_HANDLE_NOT_ENABLED;
01131
01132
01133 const ReturnCode_t RETCODE_OK = DDS_RETCODE_OK;
01134 const ReturnCode_t RETCODE_ERROR = DDS_RETCODE_ERROR;
01135 const ReturnCode_t RETCODE_UNSUPPORTED = DDS_RETCODE_UNSUPPORTED;
01136 const ReturnCode_t RETCODE_BAD_PARAMETER = DDS_RETCODE_BAD_PARAMETER;
01137 const ReturnCode_t RETCODE_PRECONDITION_NOT_MET = DDS_RETCODE_PRECONDITION_NOT_MET;
01138 const ReturnCode_t RETCODE_OUT_OF_RESOURCES = DDS_RETCODE_OUT_OF_RESOURCES;
01139 const ReturnCode_t RETCODE_NOT_ENABLED = DDS_RETCODE_NOT_ENABLED;
01140 const ReturnCode_t RETCODE_IMMUTABLE_POLICY = DDS_RETCODE_IMMUTABLE_POLICY;
01141 const ReturnCode_t RETCODE_INCONSISTENT_POLICY = DDS_RETCODE_INCONSISTENT_POLICY;
01142 const ReturnCode_t RETCODE_ALREADY_DELETED = DDS_RETCODE_ALREADY_DELETED;
01143 const ReturnCode_t RETCODE_TIMEOUT = DDS_RETCODE_TIMEOUT;
01144 const ReturnCode_t RETCODE_NO_DATA = DDS_RETCODE_NO_DATA;
01145
01146
01147 const unsigned long READ_SAMPLE_STATE = DDS_READ_SAMPLE_STATE;
01148 const unsigned long NOT_READ_SAMPLE_STATE = DDS_NOT_READ_SAMPLE_STATE;
01149 const unsigned long ANY_SAMPLE_STATE = DDS_ANY_SAMPLE_STATE;
01150
01151
01152 const unsigned long NEW_VIEW_STATE = DDS_NEW_VIEW_STATE;
01153 const unsigned long NOT_NEW_VIEW_STATE = DDS_NOT_NEW_VIEW_STATE;
01154 const unsigned long ANY_VIEW_STATE = DDS_ANY_VIEW_STATE;
01155
01156
01157 const unsigned long ALIVE_INSTANCE_STATE = DDS_ALIVE_INSTANCE_STATE;
01158 const unsigned long NOT_ALIVE_DISPOSED_INSTANCE_STATE = DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE;
01159 const unsigned long NOT_ALIVE_NO_WRITERS_INSTANCE_STATE= DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE;
01160 const unsigned long NOT_ALIVE_INSTANCE_STATE = DDS_NOT_ALIVE_INSTANCE_STATE;
01161 const unsigned long ANY_INSTANCE_STATE = DDS_ANY_INSTANCE_STATE;
01162
01163 const StatusKind INCONSISTENT_TOPIC_STATUS = DDS_INCONSISTENT_TOPIC_STATUS;
01164 const StatusKind OFFERED_DEADLINE_MISSED_STATUS = DDS_OFFERED_DEADLINE_MISSED_STATUS;
01165 const StatusKind REQUESTED_DEADLINE_MISSED_STATUS = DDS_REQUESTED_DEADLINE_MISSED_STATUS;
01166 const StatusKind OFFERED_INCOMPATIBLE_QOS_STATUS = DDS_OFFERED_INCOMPATIBLE_QOS_STATUS;
01167 const StatusKind REQUESTED_INCOMPATIBLE_QOS_STATUS = DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS;
01168 const StatusKind SAMPLE_LOST_STATUS = DDS_SAMPLE_LOST_STATUS;
01169 const StatusKind SAMPLE_REJECTED_STATUS = DDS_SAMPLE_REJECTED_STATUS;
01170 const StatusKind DATA_ON_READERS_STATUS = DDS_DATA_ON_READERS_STATUS;
01171 const StatusKind DATA_AVAILABLE_STATUS = DDS_DATA_AVAILABLE_STATUS;
01172 const StatusKind LIVELINESS_LOST_STATUS = DDS_LIVELINESS_LOST_STATUS;
01173 const StatusKind LIVELINESS_CHANGED_STATUS = DDS_LIVELINESS_CHANGED_STATUS;
01174 const StatusKind PUBLICATION_MATCHED_STATUS = DDS_PUBLICATION_MATCHED_STATUS;
01175 const StatusKind SUBSCRIPTION_MATCHED_STATUS = DDS_SUBSCRIPTION_MATCHED_STATUS;
01176 const StatusKind ALL_STATUS = DDS_ALL_STATUS;
01177
01178 const QosPolicyId_t USERDATA_QOS_POLICY_ID = DDS_USERDATA_QOS_POLICY_ID;
01179 const QosPolicyId_t DURABILITY_QOS_POLICY_ID = DDS_DURABILITY_QOS_POLICY_ID;
01180 const QosPolicyId_t PRESENTATION_QOS_POLICY_ID = DDS_PRESENTATION_QOS_POLICY_ID;
01181 const QosPolicyId_t DEADLINE_QOS_POLICY_ID = DDS_DEADLINE_QOS_POLICY_ID;
01182 const QosPolicyId_t LATENCYBUDGET_QOS_POLICY_ID = DDS_LATENCYBUDGET_QOS_POLICY_ID;
01183 const QosPolicyId_t OWNERSHIP_QOS_POLICY_ID = DDS_OWNERSHIP_QOS_POLICY_ID;
01184 const QosPolicyId_t OWNERSHIPSTRENGTH_QOS_POLICY_ID = DDS_OWNERSHIPSTRENGTH_QOS_POLICY_ID;
01185 const QosPolicyId_t LIVELINESS_QOS_POLICY_ID = DDS_LIVELINESS_QOS_POLICY_ID;
01186 const QosPolicyId_t TIMEBASEDFILTER_QOS_POLICY_ID = DDS_TIMEBASEDFILTER_QOS_POLICY_ID;
01187 const QosPolicyId_t PARTITION_QOS_POLICY_ID = DDS_PARTITION_QOS_POLICY_ID;
01188 const QosPolicyId_t RELIABILITY_QOS_POLICY_ID = DDS_RELIABILITY_QOS_POLICY_ID;
01189 const QosPolicyId_t DESTINATIONORDER_QOS_POLICY_ID = DDS_DESTINATIONORDER_QOS_POLICY_ID;
01190 const QosPolicyId_t HISTORY_QOS_POLICY_ID = DDS_HISTORY_QOS_POLICY_ID;
01191 const QosPolicyId_t RESOURCELIMITS_QOS_POLICY_ID = DDS_RESOURCELIMITS_QOS_POLICY_ID;
01192 const QosPolicyId_t ENTITYFACTORY_QOS_POLICY_ID = DDS_ENTITYFACTORY_QOS_POLICY_ID;
01193 const QosPolicyId_t WRITERDATALIFECYCLE_QOS_POLICY_ID = DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID;
01194 const QosPolicyId_t READERDATALIFECYCLE_QOS_POLICY_ID = DDS_READERDATALIFECYCLE_QOS_POLICY_ID;
01195 const QosPolicyId_t TOPICDATA_QOS_POLICY_ID = DDS_TOPICDATA_QOS_POLICY_ID;
01196 const QosPolicyId_t GROUPDATA_QOS_POLICY_ID = DDS_GROUPDATA_QOS_POLICY_ID;
01197 const QosPolicyId_t TRANSPORTPRIORITY_QOS_POLICY_ID = DDS_TRANSPORTPRIORITY_QOS_POLICY_ID;
01198 const QosPolicyId_t LIFESPAN_QOS_POLICY_ID = DDS_LIFESPAN_QOS_POLICY_ID;
01199 const QosPolicyId_t DURABILITYSERVICE_QOS_POLICY_ID = DDS_DURABILITYSERVICE_QOS_POLICY_ID;
01200 const QosPolicyId_t DATA_REPRESENTATION_QOS_POLICY_ID = DDS_DATA_REPRESENTATION_QOS_POLICY_ID;
01201
01202 COREDX_CPP_CONST char * USERDATA_QOS_POLICY_NAME ;
01203 COREDX_CPP_CONST char * DURABILITY_QOS_POLICY_NAME ;
01204 COREDX_CPP_CONST char * PRESENTATION_QOS_POLICY_NAME ;
01205 COREDX_CPP_CONST char * DEADLINE_QOS_POLICY_NAME ;
01206 COREDX_CPP_CONST char * LATENCYBUDGET_QOS_POLICY_NAME ;
01207 COREDX_CPP_CONST char * OWNERSHIP_QOS_POLICY_NAME ;
01208 COREDX_CPP_CONST char * OWNERSHIPSTRENGTH_QOS_POLICY_NAME ;
01209 COREDX_CPP_CONST char * LIVELINESS_QOS_POLICY_NAME ;
01210 COREDX_CPP_CONST char * TIMEBASEDFILTER_QOS_POLICY_NAME ;
01211 COREDX_CPP_CONST char * PARTITION_QOS_POLICY_NAME ;
01212 COREDX_CPP_CONST char * RELIABILITY_QOS_POLICY_NAME ;
01213 COREDX_CPP_CONST char * DESTINATIONORDER_QOS_POLICY_NAME ;
01214 COREDX_CPP_CONST char * HISTORY_QOS_POLICY_NAME ;
01215 COREDX_CPP_CONST char * RESOURCELIMITS_QOS_POLICY_NAME ;
01216 COREDX_CPP_CONST char * ENTITYFACTORY_QOS_POLICY_NAME ;
01217 COREDX_CPP_CONST char * WRITERDATALIFECYCLE_QOS_POLICY_NAME ;
01218 COREDX_CPP_CONST char * READERDATALIFECYCLE_QOS_POLICY_NAME ;
01219 COREDX_CPP_CONST char * TOPICDATA_QOS_POLICY_NAME ;
01220 COREDX_CPP_CONST char * GROUPDATA_QOS_POLICY_NAME ;
01221 COREDX_CPP_CONST char * TRANSPORTPRIORITY_QOS_POLICY_NAME ;
01222 COREDX_CPP_CONST char * LIFESPAN_QOS_POLICY_NAME ;
01223 COREDX_CPP_CONST char * DURABILITYSERVICE_POLICY_NAME ;
01224 COREDX_CPP_CONST char * DATA_REPRESENTATION_POLICY_NAME ;
01225
01226 COREDX_CPP_CONST DomainParticipantQos PARTICIPANT_QOS_DEFAULT ;
01227 COREDX_CPP_CONST TopicQos TOPIC_QOS_DEFAULT ;
01228 COREDX_CPP_CONST PublisherQos PUBLISHER_QOS_DEFAULT ;
01229 COREDX_CPP_CONST SubscriberQos SUBSCRIBER_QOS_DEFAULT ;
01230 COREDX_CPP_CONST DataWriterQos DATAWRITER_QOS_DEFAULT ;
01231 COREDX_CPP_CONST DataReaderQos DATAREADER_QOS_DEFAULT ;
01232 COREDX_CPP_CONST DataWriterQos DATAWRITER_QOS_USE_TOPIC_QOS;
01233 COREDX_CPP_CONST DataReaderQos DATAREADER_QOS_USE_TOPIC_QOS;
01234
01235
01236
01237
01242 class COREDX_CPP_CLASS_API Entity
01243 {
01244 public:
01248 virtual StatusCondition * get_statuscondition();
01252 virtual StatusMask get_status_changes()=0;
01259 virtual ReturnCode_t enable();
01263 virtual InstanceHandle_t get_instance_handle();
01264
01265 protected:
01266 Entity( );
01267 virtual ~Entity();
01268 void init(struct _Entity * e);
01269 struct _Entity * _entity;
01270 class StatusCondition * _sc;
01271 };
01272
01273
01274
01275
01276
01281 class COREDX_CPP_CLASS_API DomainEntity : public Entity
01282 {
01283 public:
01284 DomainEntity( struct _Entity * e );
01285 virtual ~DomainEntity() {};
01286 };
01287
01294 class COREDX_CPP_CLASS_API DomainParticipantFactory
01295 {
01296
01297 public:
01301 static DomainParticipantFactory * get_instance();
01302 static void destroy();
01303
01304
01316 DomainParticipant * create_participant( DomainId_t domain_id,
01317 const DomainParticipantQos & qos,
01318 DomainParticipantListener * a_listener,
01319 StatusMask mask);
01326 ReturnCode_t delete_participant ( DomainParticipant * a_participant );
01332 DomainParticipant * lookup_participant ( DomainId_t domain_id );
01340 ReturnCode_t set_default_participant_qos ( const DomainParticipantQos & qos );
01345 ReturnCode_t get_default_participant_qos ( DomainParticipantQos * qos);
01352 ReturnCode_t set_qos ( DomainParticipantFactoryQos & qos );
01357 ReturnCode_t get_qos ( DomainParticipantFactoryQos * qos );
01358
01359
01360 private:
01361 DomainParticipantFactory() ;
01362 ~DomainParticipantFactory();
01363
01364 static void check_cpp_assumptions();
01365 };
01366
01367
01368 extern "C" void dp_offered_deadline_missed_wrapper( struct _DataWriter * the_c_writer,
01369 DDS_OfferedDeadlineMissedStatus status);
01370 extern "C" void dp_offered_incompatible_qos_wrapper( struct _DataWriter * the_c_writer,
01371 OfferedIncompatibleQosStatus status );
01372 extern "C" void dp_liveliness_lost_wrapper( struct _DataWriter * the_c_writer,
01373 LivelinessLostStatus status );
01374 extern "C" void dp_publication_matched_wrapper( struct _DataWriter * the_c_writer,
01375 PublicationMatchedStatus status );
01376 extern "C" void dp_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
01377 extern "C" void dp_data_available_wrapper ( struct _DataReader * the_reader );
01378 extern "C" void dp_sample_rejected_wrapper ( struct _DataReader * the_reader,
01379 SampleRejectedStatus status );
01380 extern "C" void dp_liveliness_changed_wrapper ( struct _DataReader * the_reader,
01381 LivelinessChangedStatus status );
01382 extern "C" void dp_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
01383 RequestedDeadlineMissedStatus status );
01384 extern "C" void dp_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
01385 RequestedIncompatibleQosStatus status );
01386 extern "C" void dp_subscription_matched_wrapper( struct _DataReader * the_reader,
01387 SubscriptionMatchedStatus status );
01388 extern "C" void dp_sample_lost_wrapper ( struct _DataReader * the_reader,
01389 SampleLostStatus status );
01390 extern "C" void dp_inconsistent_topic_wrapper( struct _Topic * the_topic,
01391 InconsistentTopicStatus status );
01392
01393
01394
01395
01404 class COREDX_CPP_CLASS_API DomainParticipant : public Entity
01405 {
01406 friend class DomainParticipantFactory;
01407 public:
01408
01413 ReturnCode_t get_qos( DomainParticipantQos * qos);
01418 ReturnCode_t set_qos( DomainParticipantQos & qos);
01419
01428 StatusMask get_status_changes();
01437 ReturnCode_t set_listener( DomainParticipantListener * a_listener,
01438 StatusMask mask);
01448 DomainParticipantListener * get_listener( );
01456 class Publisher * create_publisher ( const PublisherQos & qos,
01457 PublisherListener * a_listener,
01458 StatusMask mask);
01466 ReturnCode_t delete_publisher ( class Publisher * p);
01474 class Subscriber * create_subscriber( const SubscriberQos & qos,
01475 SubscriberListener * a_listener,
01476 StatusMask mask);
01484 ReturnCode_t delete_subscriber( class Subscriber * s);
01496 class Topic * create_topic( const char * topic_name,
01497 const char * type_name,
01498 const TopicQos & qos,
01499 TopicListener * a_listener,
01500 StatusMask mask);
01509 ReturnCode_t delete_topic( class Topic * a_topic);
01522 class Topic * find_topic ( const char * topic_name,
01523 Duration_t timeout);
01529 class TopicDescription * lookup_topicdescription( const char * name );
01540 class Subscriber * get_builtin_subscriber();
01549 ReturnCode_t ignore_participant ( InstanceHandle_t &handle);
01558 ReturnCode_t ignore_topic ( InstanceHandle_t &handle);
01566 ReturnCode_t ignore_publication ( InstanceHandle_t &handle);
01574 ReturnCode_t ignore_subscription ( InstanceHandle_t &handle);
01579 DomainId_t get_domain_id( );
01589 ReturnCode_t delete_contained_entities( );
01601 ReturnCode_t assert_liveliness( );
01609 ReturnCode_t set_default_publisher_qos( const PublisherQos & qos);
01614 ReturnCode_t get_default_publisher_qos( PublisherQos * qos);
01622 ReturnCode_t set_default_subscriber_qos( const SubscriberQos & qos);
01627 ReturnCode_t get_default_subscriber_qos( SubscriberQos * qos);
01635 ReturnCode_t set_default_topic_qos( const TopicQos & qos);
01640 ReturnCode_t get_default_topic_qos( TopicQos * qos);
01648 ReturnCode_t get_discovered_participants( InstanceHandleSeq * participant_handles );
01655 ReturnCode_t get_discovered_participant_data( ParticipantBuiltinTopicData * participant_data,
01656 InstanceHandle_t & participant_handle );
01664 ReturnCode_t get_discovered_topics( InstanceHandleSeq * topic_handles);
01696 class ContentFilteredTopic *create_contentfilteredtopic( const char * name,
01697 class Topic * related_topic,
01698 const char * filter_expression,
01699 const StringSeq & filter_parameters);
01709 ReturnCode_t delete_contentfilteredtopic( class ContentFilteredTopic * a_cft);
01715 class MultiTopic * create_multitopic( const char * name,
01716 const char * type_name,
01717 const char * subscription_expression,
01718 const StringSeq & expression_params);
01724 ReturnCode_t delete_multitopic( class MultiTopic * a_multitopic);
01731 ReturnCode_t get_discovered_topic_data( TopicBuiltinTopicData * topic_data,
01732 InstanceHandle_t & topic_handle );
01733
01740 bool contains_entity( InstanceHandle_t a_handle);
01744 ReturnCode_t get_current_time( Time_t * current_time);
01745
01757 ReturnCode_t do_work( const Duration_t time_slice );
01761 ReturnCode_t builtin_wait_for_acknowledgments( const Duration_t max_wait );
01762
01763 ReturnCode_t add_transport(CoreDX_Transport * transport);
01764
01765
01766
01767
01783 ReturnCode_t enable( );
01788 InstanceHandle_t get_instance_handle( );
01789
01790 protected:
01791 struct DP_impl * _impl;
01792
01793
01794 DomainParticipant();
01795 ~DomainParticipant();
01796
01797 void init();
01798
01799 static void initialize_listener( DDS_DomainParticipantListener * core_listener,
01800 StatusMask nil_listener );
01801
01802 friend void dp_offered_deadline_missed_wrapper( struct _DataWriter * the_c_writer,
01803 DDS_OfferedDeadlineMissedStatus status);
01804 friend void dp_offered_incompatible_qos_wrapper( struct _DataWriter * the_c_writer,
01805 OfferedIncompatibleQosStatus status );
01806 friend void dp_liveliness_lost_wrapper( struct _DataWriter * the_c_writer,
01807 LivelinessLostStatus status );
01808 friend void dp_publication_matched_wrapper( struct _DataWriter * the_c_writer,
01809 PublicationMatchedStatus status );
01810 friend void dp_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
01811 friend void dp_data_available_wrapper ( struct _DataReader * the_reader );
01812 friend void dp_sample_rejected_wrapper ( struct _DataReader * the_reader,
01813 SampleRejectedStatus status );
01814 friend void dp_liveliness_changed_wrapper ( struct _DataReader * the_reader,
01815 LivelinessChangedStatus status );
01816 friend void dp_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
01817 RequestedDeadlineMissedStatus status );
01818 friend void dp_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
01819 RequestedIncompatibleQosStatus status );
01820 friend void dp_subscription_matched_wrapper( struct _DataReader * the_reader,
01821 SubscriptionMatchedStatus status );
01822 friend void dp_sample_lost_wrapper ( struct _DataReader * the_reader,
01823 SampleLostStatus status );
01824 friend void dp_inconsistent_topic_wrapper( struct _Topic * the_topic,
01825 InconsistentTopicStatus status );
01826
01827 public:
01835 ReturnCode_t register_type( TypeSupport * ts, const char * type_name );
01845 int check_version( const char * major, const char * minor, const char * patch);
01846 TypeSupport * get_type( const char * type_name );
01850 void print_stats( );
01851
01852 };
01853
01854
01855 extern "C" void pub_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
01856 OfferedDeadlineMissedStatus status);
01857 extern "C" void pub_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
01858 OfferedIncompatibleQosStatus status );
01859 extern "C" void pub_liveliness_lost_wrapper( _DataWriter * the_c_writer,
01860 LivelinessLostStatus status );
01861 extern "C" void pub_publication_matched_wrapper( _DataWriter * the_c_writer,
01862 PublicationMatchedStatus status );
01863
01864
01865
01866
01871 class COREDX_CPP_CLASS_API Publisher : public Entity
01872 {
01873 friend class DomainParticipant;
01874 public:
01890 ReturnCode_t enable( );
01895 InstanceHandle_t get_instance_handle( );
01904 StatusMask get_status_changes();
01905
01910 class DomainParticipant * get_participant( );
01924 class DataWriter * create_datawriter( Topic * a_topic,
01925 const DataWriterQos & qos,
01926 DataWriterListener * a_listener,
01927 StatusMask mask);
01933 ReturnCode_t delete_datawriter( DataWriter * a_datawriter);
01940 class DataWriter * lookup_datawriter( const char * topic_name);
01950 ReturnCode_t delete_contained_entities( );
01955 ReturnCode_t set_qos( PublisherQos & qos);
01969 ReturnCode_t get_qos( PublisherQos * qos);
01978 ReturnCode_t set_listener( PublisherListener * a_listener,
01979 StatusMask mask);
01989 class PublisherListener * get_listener( );
01993 ReturnCode_t suspend_publications( );
01997 ReturnCode_t resume_publications( );
02001 ReturnCode_t begin_coherent_changes( );
02005 ReturnCode_t end_coherent_changes( );
02014 ReturnCode_t wait_for_acknowledgments(const Duration_t max_wait);
02023 ReturnCode_t set_default_datawriter_qos( const DataWriterQos & qos);
02028 ReturnCode_t get_default_datawriter_qos( DataWriterQos * qos);
02035 ReturnCode_t copy_from_topic_qos( DataWriterQos * a_datawriter_qos,
02036 TopicQos & a_topic_qos);
02037 protected:
02038
02039 Publisher();
02040 ~Publisher();
02041
02042
02043 static void initialize_listener( DDS_PublisherListener * core_listener,
02044 StatusMask nil_listeners );
02045 friend void pub_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
02046 OfferedDeadlineMissedStatus status);
02047 friend void pub_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
02048 OfferedIncompatibleQosStatus status );
02049 friend void pub_liveliness_lost_wrapper( _DataWriter * the_c_writer,
02050 LivelinessLostStatus status );
02051 friend void pub_publication_matched_wrapper( _DataWriter * the_c_writer,
02052 PublicationMatchedStatus status );
02053
02054 struct PUB_impl * _impl;
02055 };
02056
02057 extern "C" void sub_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
02058 extern "C" void sub_data_available_wrapper ( struct _DataReader * the_reader );
02059 extern "C" void sub_sample_rejected_wrapper ( struct _DataReader * the_reader,
02060 SampleRejectedStatus status );
02061 extern "C" void sub_liveliness_changed_wrapper ( struct _DataReader * the_reader,
02062 LivelinessChangedStatus status );
02063 extern "C" void sub_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
02064 RequestedDeadlineMissedStatus status );
02065 extern "C" void sub_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
02066 RequestedIncompatibleQosStatus status );
02067 extern "C" void sub_subscription_matched_wrapper( struct _DataReader * the_reader,
02068 SubscriptionMatchedStatus status );
02069 extern "C" void sub_sample_lost_wrapper ( struct _DataReader * the_reader,
02070 SampleLostStatus status );
02071
02072
02073
02078 class COREDX_CPP_CLASS_API Subscriber : public Entity
02079 {
02080 friend class DomainParticipant;
02081 public:
02097 ReturnCode_t enable( );
02102 InstanceHandle_t get_instance_handle( );
02111 StatusMask get_status_changes();
02125 DataReader * create_datareader( TopicDescription * a_topic,
02126 const DataReaderQos & qos,
02127 DataReaderListener* a_listener,
02128 StatusMask mask);
02138 ReturnCode_t delete_datareader( class DataReader * a_datareader);
02149 ReturnCode_t delete_contained_entities( );
02157 DataReader * lookup_datareader( const char * topic_name);
02174 ReturnCode_t get_datareaders( DataReaderSeq * readers,
02175 SampleStateMask sample_states,
02176 ViewStateMask view_states,
02177 InstanceStateMask instance_states) ;
02182 DomainParticipant * get_participant();
02187 ReturnCode_t set_qos( SubscriberQos & qos);
02200 ReturnCode_t get_qos( SubscriberQos * qos);
02209 ReturnCode_t set_listener( SubscriberListener * a_listener,
02210 StatusMask mask);
02220 SubscriberListener * get_listener( );
02228 ReturnCode_t begin_access( );
02233 ReturnCode_t end_access( );
02242 ReturnCode_t set_default_datareader_qos( const DataReaderQos & qos);
02247 ReturnCode_t get_default_datareader_qos( DataReaderQos * qos);
02254 ReturnCode_t copy_from_topic_qos( DataReaderQos * a_datareader_qos,
02255 TopicQos & a_topic_qos);
02256
02257 protected:
02258
02259 Subscriber( );
02260 ~Subscriber();
02261
02262 static void initialize_listener( DDS_SubscriberListener * core_listener,
02263 StatusMask nil_listeners );
02264 friend void sub_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
02265 friend void sub_data_available_wrapper ( struct _DataReader * the_reader );
02266 friend void sub_sample_rejected_wrapper ( struct _DataReader * the_reader,
02267 SampleRejectedStatus status );
02268 friend void sub_liveliness_changed_wrapper ( struct _DataReader * the_reader,
02269 LivelinessChangedStatus status );
02270 friend void sub_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
02271 RequestedDeadlineMissedStatus status );
02272 friend void sub_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
02273 RequestedIncompatibleQosStatus status );
02274 friend void sub_subscription_matched_wrapper( struct _DataReader * the_reader,
02275 SubscriptionMatchedStatus status );
02276 friend void sub_sample_lost_wrapper ( struct _DataReader * the_reader,
02277 SampleLostStatus status );
02278
02279 struct SUB_impl * _impl;
02280 };
02281
02282
02283
02284
02290 class COREDX_CPP_CLASS_API TopicDescription
02291 {
02292 friend class Subscriber;
02293 friend class DomainParticipant;
02294 public:
02295 TopicDescription();
02296 virtual ~TopicDescription();
02297
02301 virtual DomainParticipant * get_participant( );
02306 virtual const char * get_type_name ( );
02311 virtual const char * get_name ( );
02312 private:
02313 struct _TopicDescription * _td;
02314 };
02315
02316 extern "C" void top_inconsistent_topic_wrapper( struct _Topic * topic,
02317 InconsistentTopicStatus status );
02318
02319
02320
02331 class COREDX_CPP_CLASS_API Topic : public TopicDescription,
02332 public Entity
02333 {
02334 friend class DomainParticipant;
02335 friend class Publisher;
02336 public:
02340 const char * get_type_name ( );
02344 const char * get_name ( );
02348 DomainParticipant * get_participant( );
02354 StatusMask get_status_changes();
02369 ReturnCode_t enable( );
02374 ReturnCode_t set_qos( TopicQos & qos);
02386 ReturnCode_t get_qos( TopicQos * qos);
02395 ReturnCode_t set_listener( TopicListener * a_listener,
02396 StatusMask mask);
02406 TopicListener * get_listener( );
02411 ReturnCode_t get_inconsistent_topic_status( InconsistentTopicStatus * a_status);
02412 protected:
02413 Topic( );
02414 virtual ~Topic();
02415
02416 static void initialize_listener( DDS_TopicListener * core_listener,
02417 StatusMask nil_listeners );
02418 friend void top_inconsistent_topic_wrapper( struct _Topic * topic,
02419 InconsistentTopicStatus status );
02420 struct _Topic * _topic;
02421 TopicListener * _listener;
02422 };
02423
02424
02425
02426
02459 class COREDX_CPP_CLASS_API ContentFilteredTopic : public TopicDescription
02460 {
02461 friend class DomainParticipant;
02462 friend class Publisher;
02463 public:
02464 const char * get_type_name ( );
02465 const char * get_name ( );
02470 Topic * get_related_topic( );
02475 ReturnCode_t get_expression_parameters( StringSeq & params);
02486 ReturnCode_t set_expression_parameters( const StringSeq & params);
02487 protected:
02488 ContentFilteredTopic( );
02489 virtual ~ContentFilteredTopic();
02490
02491 struct _ContentFilteredTopic * _cf_topic;
02492 Topic * _related_topic;
02493 };
02494
02495 extern "C" void dw_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
02496 OfferedDeadlineMissedStatus status);
02497 extern "C" void dw_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
02498 OfferedIncompatibleQosStatus status );
02499 extern "C" void dw_liveliness_lost_wrapper( _DataWriter * the_c_writer,
02500 LivelinessLostStatus status );
02501 extern "C" void dw_publication_matched_wrapper( _DataWriter * the_c_writer,
02502 PublicationMatchedStatus status );
02503
02504
02505
02513 class COREDX_CPP_CLASS_API DataWriter : public Entity
02514 {
02515 friend class Publisher;
02516 friend class DomainParticipant;
02517 public:
02531 ReturnCode_t enable( );
02536 InstanceHandle_t get_instance_handle( );
02542 StatusMask get_status_changes();
02547 ReturnCode_t set_qos(DataWriterQos & qos);
02559 ReturnCode_t get_qos(DataWriterQos * qos);
02568 ReturnCode_t set_listener(DataWriterListener * a_listener,
02569 StatusMask mask);
02579 DataWriterListener * get_listener();
02584 class Topic * get_topic();
02589 class Publisher * get_publisher();
02598 ReturnCode_t wait_for_acknowledgments(const Duration_t max_wait);
02608 ReturnCode_t assert_liveliness();
02614 InstanceHandle_t register_instance(const void * instance_data);
02620 InstanceHandle_t register_instance_w_timestamp(const void * instance_data,
02621 const Time_t source_timestamp);
02628 ReturnCode_t unregister_instance( const void * instance_data,
02629 const InstanceHandle_t handle);
02636 ReturnCode_t unregister_instance_w_timestamp( const void * instance_data,
02637 const InstanceHandle_t handle,
02638 const Time_t source_timestamp);
02651 ReturnCode_t write( const void * instance_data,
02652 const InstanceHandle_t handle);
02665 ReturnCode_t write_w_timestamp(const void * instance_data,
02666 const InstanceHandle_t handle,
02667 const Time_t source_timestamp);
02674 ReturnCode_t dispose(const void * instance_data,
02675 const InstanceHandle_t instance_handle);
02682 ReturnCode_t dispose_w_timestamp( const void * instance_data,
02683 const InstanceHandle_t instance_handle,
02684 const Time_t source_timestamp);
02692 ReturnCode_t get_key_value( void * key_holder,
02693 const InstanceHandle_t handle);
02698 InstanceHandle_t lookup_instance( const void * instance_data);
02699
02700
02701
02706 ReturnCode_t get_liveliness_lost_status ( LivelinessLostStatus *status );
02711 ReturnCode_t get_offered_deadline_missed_status ( OfferedDeadlineMissedStatus *status );
02716 ReturnCode_t get_offered_incompatible_qos_status( OfferedIncompatibleQosStatus *status );
02721 ReturnCode_t get_publication_matched_status ( PublicationMatchedStatus *status );
02729 ReturnCode_t get_matched_subscriptions( InstanceHandleSeq * subscription_handles);
02736 ReturnCode_t get_matched_subscription_data( SubscriptionBuiltinTopicData * subscription_data,
02737 InstanceHandle_t & subscription_handle);
02738
02739 virtual DataWriter * narrow() = 0;
02740 protected:
02741
02742 DataWriter( );
02743 virtual ~DataWriter();
02744
02745 static void initialize_listener( DDS_DataWriterListener * core_listener,
02746 StatusMask nil_listener );
02747 friend void dw_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
02748 OfferedDeadlineMissedStatus status);
02749 friend void dw_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
02750 OfferedIncompatibleQosStatus status );
02751 friend void dw_liveliness_lost_wrapper( _DataWriter * the_c_writer,
02752 LivelinessLostStatus status );
02753 friend void dw_publication_matched_wrapper( _DataWriter * the_c_writer,
02754 PublicationMatchedStatus status );
02755
02756 struct DW_impl * _impl;
02757 };
02758
02759
02760 extern "C" void dr_requested_deadline_missed_wrapper( _DataReader * dr, RequestedDeadlineMissedStatus status );
02761 extern "C" void dr_requested_incompatible_qos_wrapper( _DataReader * dr, RequestedIncompatibleQosStatus status );
02762 extern "C" void dr_sample_rejected_wrapper( _DataReader * dr, SampleRejectedStatus status );
02763 extern "C" void dr_liveliness_changed_wrapper( _DataReader * dr, LivelinessChangedStatus status );
02764 extern "C" void dr_data_available_wrapper( _DataReader * dr );
02765 extern "C" void dr_subscription_matched_wrapper( _DataReader * dr, SubscriptionMatchedStatus status );
02766 extern "C" void dr_sample_lost_wrapper( _DataReader * dr, SampleLostStatus status );
02767
02768
02769
02770
02779 class COREDX_CPP_CLASS_API DataReader : public Entity
02780 {
02781 friend class Subscriber;
02782 friend class DomainParticipant;
02783 public:
02788 InstanceHandle_t get_instance_handle( );
02794 StatusMask get_status_changes ( );
02808 ReturnCode_t enable ( );
02809 StatusCondition * get_statuscondition( );
02816 ReadCondition * create_readcondition( SampleStateMask sample_states,
02817 ViewStateMask view_states,
02818 InstanceStateMask instance_states);
02829 ReturnCode_t delete_readcondition( ReadCondition * a_condition);
02838 ReturnCode_t delete_contained_entities( );
02843 ReturnCode_t set_qos( DataReaderQos & qos);
02855 ReturnCode_t get_qos( DataReaderQos * qos);
02864 ReturnCode_t set_listener( DataReaderListener * a_listener,
02865 StatusMask mask);
02875 DataReaderListener * get_listener();
02881 TopicDescription * get_topicdescription( );
02886 Subscriber * get_subscriber( );
02891 ReturnCode_t get_sample_rejected_status ( SampleRejectedStatus * status);
02896 ReturnCode_t get_liveliness_changed_status( LivelinessChangedStatus * status);
02901 ReturnCode_t get_requested_deadline_missed_status ( RequestedDeadlineMissedStatus * status);
02906 ReturnCode_t get_requested_incompatible_qos_status( RequestedIncompatibleQosStatus * status);
02911 ReturnCode_t get_subscription_matched_status ( SubscriptionMatchedStatus * status);
02916 ReturnCode_t get_sample_lost_status ( SampleLostStatus * status);
02921 ReturnCode_t wait_for_historical_data( Duration_t max_wait);
02929 ReturnCode_t get_matched_publications( InstanceHandleSeq * publication_handles);
02936 ReturnCode_t get_matched_publication_data( PublicationBuiltinTopicData * publication_data,
02937 const InstanceHandle_t publication_handle);
02970 QueryCondition * create_querycondition( SampleStateMask sample_states,
02971 ViewStateMask view_states,
02972 InstanceStateMask instance_states,
02973 const char * query_expression,
02974 const StringSeq & query_parameters);
02975
02976
03017 ReturnCode_t read( Sequence * received_data,
03018 SampleInfoSeq * sample_infos,
03019 long max_samples,
03020 SampleStateMask sample_states,
03021 ViewStateMask view_states,
03022 InstanceStateMask instance_states);
03063 ReturnCode_t take( Sequence * received_data,
03064 SampleInfoSeq * sample_infos,
03065 long max_samples,
03066 SampleStateMask sample_states,
03067 ViewStateMask view_states,
03068 InstanceStateMask instance_states);
03077 ReturnCode_t read_w_condition( Sequence * received_data,
03078 SampleInfoSeq * sample_infos,
03079 long max_samples,
03080 ReadCondition * a_condition);
03089 ReturnCode_t take_w_condition( Sequence * received_data,
03090 SampleInfoSeq * sample_infos,
03091 long max_samples,
03092 ReadCondition * a_condition);
03100 ReturnCode_t read_next_sample( void * received_data,
03101 SampleInfo * sample_info);
03109 ReturnCode_t take_next_sample( void * received_data,
03110 SampleInfo * sample_info);
03119 ReturnCode_t read_instance(Sequence * received_data,
03120 SampleInfoSeq * sample_infos,
03121 long max_samples,
03122 InstanceHandle_t a_handle,
03123 SampleStateMask sample_states,
03124 ViewStateMask view_states,
03125 InstanceStateMask instance_states);
03134 ReturnCode_t take_instance(Sequence * received_data,
03135 SampleInfoSeq * sample_infos,
03136 long max_samples,
03137 InstanceHandle_t a_handle,
03138 SampleStateMask sample_states,
03139 ViewStateMask view_states,
03140 InstanceStateMask instance_states);
03149 ReturnCode_t read_next_instance( Sequence * received_data,
03150 SampleInfoSeq * sample_infos,
03151 long max_samples,
03152 InstanceHandle_t previous_handle,
03153 SampleStateMask sample_states,
03154 ViewStateMask view_states,
03155 InstanceStateMask instance_states);
03164 ReturnCode_t take_next_instance( Sequence * received_data,
03165 SampleInfoSeq * sample_infos,
03166 long max_samples,
03167 InstanceHandle_t previous_handle,
03168 SampleStateMask sample_states,
03169 ViewStateMask view_states,
03170 InstanceStateMask instance_states);
03179 ReturnCode_t read_next_instance_w_condition( Sequence * received_data,
03180 SampleInfoSeq * sample_infos,
03181 long max_samples,
03182 InstanceHandle_t previous_handle,
03183 ReadCondition * a_condition);
03192 ReturnCode_t take_next_instance_w_condition( Sequence * received_data,
03193 SampleInfoSeq * sample_infos,
03194 long max_samples,
03195 InstanceHandle_t previous_handle,
03196 ReadCondition * a_condition);
03211 ReturnCode_t return_loan( Sequence * received_data,
03212 SampleInfoSeq * sample_infos);
03220 ReturnCode_t get_key_value( void * key_holder,
03221 InstanceHandle_t handle);
03228 InstanceHandle_t lookup_instance( void * instance_data);
03229 virtual DataReader * narrow() = 0;
03230
03231 protected:
03232 DataReader( );
03233 virtual ~DataReader( );
03234
03235 static void initialize_listener( DDS_DataReaderListener * core_listener,
03236 StatusMask nil_listeners );
03237 friend void dr_requested_deadline_missed_wrapper( _DataReader * dr, RequestedDeadlineMissedStatus status );
03238 friend void dr_requested_incompatible_qos_wrapper( _DataReader * dr, RequestedIncompatibleQosStatus status );
03239 friend void dr_sample_rejected_wrapper( _DataReader * dr, SampleRejectedStatus status );
03240 friend void dr_liveliness_changed_wrapper( _DataReader * dr, LivelinessChangedStatus status );
03241 friend void dr_data_available_wrapper( _DataReader * dr );
03242 friend void dr_subscription_matched_wrapper( _DataReader * dr, SubscriptionMatchedStatus status );
03243 friend void dr_sample_lost_wrapper( _DataReader * dr, SampleLostStatus status );
03244
03245 struct DR_impl * _impl;
03246 };
03247
03248
03249
03250
03251
03259 class COREDX_CPP_CLASS_API Condition
03260 {
03261
03262 friend class WaitSet;
03263 public:
03269 virtual bool get_trigger_value();
03270 protected:
03271 Condition( struct _Condition * c );
03272 Condition(void);
03273 virtual ~Condition();
03274 struct _Condition * _condition;
03275 };
03276
03277
03278
03279
03280
03286 class COREDX_CPP_CLASS_API GuardCondition : public Condition
03287 {
03288 public:
03289 GuardCondition( );
03290 GuardCondition( struct _GuardCondition * gc );
03291 ~GuardCondition( );
03297 bool get_trigger_value();
03307 ReturnCode_t set_trigger_value( bool v );
03308 protected:
03309 struct _GuardCondition * _guard_condition;
03310 };
03311
03312
03313
03314
03320 class COREDX_CPP_CLASS_API StatusCondition : public Condition
03321 {
03322 friend class Entity;
03323 public:
03329 bool get_trigger_value();
03334 ReturnCode_t set_enabled_statuses( StatusMask mask );
03339 StatusMask get_enabled_statuses();
03343 Entity * get_entity();
03344 protected:
03345 StatusCondition( struct _StatusCondition * sc );
03346 ~StatusCondition();
03347 struct _StatusCondition * _status_condition;
03348 };
03349
03350
03351
03352
03361 class COREDX_CPP_CLASS_API ReadCondition : public Condition
03362 {
03363 friend class DataReader;
03364 public:
03370 bool get_trigger_value();
03374 DataReader * get_datareader();
03378 SampleStateKind get_sample_state_mask();
03382 ViewStateKind get_view_state_mask();
03386 InstanceStateKind get_instance_state_mask();
03387 protected:
03388 ReadCondition( struct _ReadCondition * rc );
03389 ~ReadCondition();
03390 struct _ReadCondition * _read_condition;
03391 };
03392
03393
03394
03395
03403 class COREDX_CPP_CLASS_API QueryCondition : public ReadCondition
03404 {
03405 friend class DataReader;
03406 public:
03407 QueryCondition( struct _QueryCondition * qc );
03408 ~QueryCondition();
03415 const char * get_query_expression ( void );
03427 ReturnCode_t get_query_parameters ( StringSeq & seq);
03443 ReturnCode_t set_query_parameters ( const StringSeq & seq);
03444
03445 protected:
03446 struct _QueryCondition * _query_condition;
03447 };
03448
03449
03450
03451
03460 class COREDX_CPP_CLASS_API WaitSet
03461 {
03462 public:
03463 WaitSet( );
03464 ~WaitSet();
03471 ReturnCode_t attach_condition( Condition & a_condition );
03477 ReturnCode_t detach_condition( Condition & a_condition );
03492 ReturnCode_t wait ( ConditionSeq & active_conditions, Duration_t timeout );
03498 ReturnCode_t get_conditions ( ConditionSeq & attached_conditions );
03499 protected:
03500 struct _WaitSet * _wait_set;
03501 };
03502
03503
03504
03505
03506 class COREDX_CPP_CLASS_API Listener
03507 {
03508 public:
03509 Listener() { nil_listeners = 0; }
03510 virtual ~Listener() {};
03511
03512
03513
03514
03515
03516
03517
03518
03519 StatusMask nil_listeners;
03520 };
03521
03522
03523
03524
03536 class COREDX_CPP_CLASS_API DataWriterListener : virtual public Listener
03537 {
03538 public:
03539 DataWriterListener() {};
03540 virtual ~DataWriterListener() {};
03548 virtual void on_offered_deadline_missed ( DataWriter * ,
03549 OfferedDeadlineMissedStatus ) {};
03556 virtual void on_offered_incompatible_qos( DataWriter * ,
03557 OfferedIncompatibleQosStatus ) {};
03563 virtual void on_liveliness_lost ( DataWriter * ,
03564 LivelinessLostStatus ) {};
03571 virtual void on_publication_matched ( DataWriter * ,
03572 PublicationMatchedStatus ) {};
03573 };
03574
03575
03576
03577
03589 class COREDX_CPP_CLASS_API PublisherListener : public DataWriterListener
03590 {
03591 public:
03592 PublisherListener() {};
03593 virtual ~PublisherListener() {};
03594 };
03595
03596
03597
03598
03609 class COREDX_CPP_CLASS_API TopicListener : virtual public Listener
03610 {
03611 public:
03612 TopicListener() {};
03613 virtual ~TopicListener() {};
03619 virtual void on_inconsistent_topic( Topic * ,
03620 InconsistentTopicStatus ) {};
03621 };
03622
03623
03624
03625
03637 class COREDX_CPP_CLASS_API DataReaderListener : virtual public Listener
03638 {
03639 public:
03640 DataReaderListener() {};
03641 virtual ~DataReaderListener() {};
03648 virtual void on_requested_deadline_missed ( DataReader * ,
03649 RequestedDeadlineMissedStatus ) {};
03656 virtual void on_requested_incompatible_qos( DataReader * ,
03657 RequestedIncompatibleQosStatus ) {};
03663 virtual void on_sample_rejected ( DataReader * ,
03664 SampleRejectedStatus ) {};
03670 virtual void on_liveliness_changed ( DataReader * ,
03671 LivelinessChangedStatus ) {};
03677 virtual void on_data_available ( DataReader * ) {};
03683 virtual void on_subscription_matched ( DataReader * ,
03684 SubscriptionMatchedStatus ) {};
03690 virtual void on_sample_lost ( DataReader * ,
03691 SampleLostStatus ) {};
03692 };
03693
03694
03695
03696
03708 class COREDX_CPP_CLASS_API SubscriberListener : public DataReaderListener
03709 {
03710 public:
03711 SubscriberListener() {};
03712 virtual ~SubscriberListener() {};
03719 virtual void on_data_on_readers( Subscriber * ) {};
03720 };
03721
03722
03723
03724
03736 class COREDX_CPP_CLASS_API DomainParticipantListener : public PublisherListener,
03737 public TopicListener,
03738 public SubscriberListener
03739 {
03740 public:
03741 DomainParticipantListener() {};
03742 virtual ~DomainParticipantListener() {};
03743 };
03744
03745
03746 }
03747
03748
03749 #endif