CoreDX Data Distribution Service
The High Performance, Small Footprint DDS from Twin Oaks Computing, Inc
dds.hh
Go to the documentation of this file.
1 /*****************************************************************
2  *
3  * file: dds.hh
4  * desc: This file provides the C++ language binding for CoreDX DDS.
5  *
6  *****************************************************************
7  *
8  * Copyright(C) 2006-2020 Twin Oaks Computing, Inc
9  * All rights reserved. Castle Rock, CO 80108
10  *
11  *****************************************************************
12  *
13  * This software has been provided pursuant to a License Agreement
14  * containing restrictions on its use. This software contains
15  * valuable trade secrets and proprietary information of
16  * Twin Oaks Computing, Inc and is protected by law. It may not be
17  * copied or distributed in any form or medium, disclosed to third
18  * parties, reverse engineered or used in any manner not provided
19  * for in said License Agreement except with the prior written
20  * authorization from Twin Oaks Computing, Inc.
21  *
22  *****************************************************************/
23 #ifndef _DDS_HH
24 #define _DDS_HH
25 
26 #include <dds/dds.h>
27 #include <dds/dds_seq.hh>
28 #include <dds/dds_map.hh>
29 
30 namespace coredx { namespace rpc {
31  class Requester;
32  }
33 }
34 
147 namespace DDS
148 {
149  // -------------------------------------------------------------
150  // FORWARDS
151  // -------------------------------------------------------------
152  class Entity;
153  class DomainEntity;
154  class DomainParticipantFactory;
155  class DomainParticipant;
156  class Publisher;
157  class Subscriber;
158  class DataReader;
159  class DataWriter;
160  class TopicDescription;
161  class Topic;
162  class ContentFilteredTopic;
163  class Listener;
164  class DomainParticipantListener;
165  class PublisherListener;
166  class SubscriberListener;
167  class TopicListener;
168  class DataReaderListener;
169  class DataWriterListener;
170  class Condition;
171  class GuardCondition;
172  class StatusCondition;
173  class ReadCondition;
174  class QueryCondition;
175  class TypeSupport;
176 
177  // -------------------------------------------------------------
178  // Status
179  // -------------------------------------------------------------
180  typedef struct DDS_InconsistentTopicStatus InconsistentTopicStatus;
181  typedef struct DDS_SampleLostStatus SampleLostStatus;
182  typedef struct DDS_SampleRejectedStatus SampleRejectedStatus;
183  typedef struct DDS_LivelinessLostStatus LivelinessLostStatus;
184  typedef struct DDS_LivelinessChangedStatus LivelinessChangedStatus;
185  typedef struct DDS_OfferedDeadlineMissedStatus OfferedDeadlineMissedStatus;
186  typedef struct DDS_RequestedDeadlineMissedStatus RequestedDeadlineMissedStatus;
187  typedef struct DDS_QosPolicyCount QosPolicyCount;
188  typedef struct DDS_OfferedIncompatibleQosStatus OfferedIncompatibleQosStatus;
189  typedef struct DDS_RequestedIncompatibleQosStatus RequestedIncompatibleQosStatus;
190  typedef struct DDS_PublicationMatchedStatus PublicationMatchedStatus;
191  typedef struct DDS_SubscriptionMatchedStatus SubscriptionMatchedStatus;
192  typedef struct DDS_CacheStatistics CacheStatistics;
193 
194  typedef enum SampleRejectedStatusKind
195  {
196  NOT_REJECTED,
197  REJECTED_BY_INSTANCE_LIMIT,
198  REJECTED_BY_SAMPLES_LIMIT,
199  REJECTED_BY_SAMPLES_PER_INSTANCE_LIMIT
200  } SampleRejectedStatusKind;
201 
202  // -------------------------------------------------------------
203  // BASIC TYPES
204  // -------------------------------------------------------------
205  typedef unsigned char Octet;
206  typedef DDS_DOMAINID_TYPE_NATIVE DomainId_t;
207  typedef DDS_HANDLE_TYPE_NATIVE InstanceHandle_t;
208  typedef long ReturnCode_t;
209  typedef long QosPolicyId_t;
210  typedef unsigned long SampleStateKind;
211  typedef unsigned long SampleStateMask;
212  typedef unsigned long ViewStateKind;
213  typedef unsigned long ViewStateMask;
214  typedef unsigned long InstanceStateKind;
215  typedef unsigned long InstanceStateMask;
216  typedef unsigned long StatusKind;
217  typedef unsigned long StatusMask;
222  struct Time_t
223  {
224  Time_t() : sec(0),nanosec(0) {};
225  Time_t(int32_t s, uint32_t nsec) : sec(s), nanosec(nsec) {};
226  Time_t(const DDS_Time_t & other)
227  : sec(other.sec), nanosec(other.nanosec) {}
228 
229  operator DDS_Time_t () const { DDS_Time_t retval; retval.sec = sec; retval.nanosec=nanosec; return retval; }
230  int32_t sec;
231  uint32_t nanosec;
232  };
233 
234 
238  typedef struct DDS_SampleInfo SampleInfo;
239 
240  /*
241  * The builtin data types
242  */
243  typedef struct DCPSParticipant ParticipantBuiltinTopicData;
244  typedef struct DCPSTopic TopicBuiltinTopicData;
245  typedef struct DCPSPublication PublicationBuiltinTopicData;
246  typedef struct DCPSSubscription SubscriptionBuiltinTopicData;
247 
248  // -------------------------------------------------------------
249  // Common Sequences
250  // -------------------------------------------------------------
265 
266  //disable warnings on extern before template instantiation
267  // (this is the only way to build Windows DLL, but it makes the Windows Compiler unhappy, odd.)
268 #if defined(_WIN32) && !defined(__MINGW32__)
269 # pragma warning (disable : 4231)
270  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<unsigned char>;
271  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<SampleInfo *>;
272  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<DataReader *>;
273  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<InstanceHandle_t>;
274  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<Condition *>;
275  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<char *>;
276  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<void *>;
277 #endif
278 
279 
280 } /* namespace DDS */
281 #include <dds/dds_builtin.hh>
282 
283 namespace DDS {
298  typedef struct COREDX_CPP_CLASS_API EntityFactoryQosPolicy {
301  void init() {}
302  void copy(const EntityFactoryQosPolicy * from) { if (from) *this = *from; }
303  void clear() {}
305 
315  typedef struct COREDX_CPP_CLASS_API WriterDataLifecycleQosPolicy {
318  void init() {}
319  void copy(const WriterDataLifecycleQosPolicy * from) { if (from) *this = *from; }
320  void clear() {}
329  typedef struct COREDX_CPP_CLASS_API ReaderDataLifecycleQosPolicy {
333  void init() {}
334  void copy(const ReaderDataLifecycleQosPolicy * from) { if (from) *this = *from; }
335  void clear() {}
337 
338  // -------------------------------------------------------------
339  // - CoreDX DDS QoS Extensions:
340  // -------------------------------------------------------------
347  typedef struct COREDX_CPP_CLASS_API EntityNameQosPolicy {
348  char value[COREDX_ENTITY_NAME_MAX];
350 
363  typedef struct COREDX_CPP_CLASS_API LoggingQosPolicy {
364  unsigned int flags;
365  /*
366  logging uri examples:
367  'file:///tmp/dds.log',
368  'stdout',
369  'stderr'
370  */
371  char uri[COREDX_LOGGING_URI_MAX];
373 
379  typedef struct Locator_t {
380  int kind;
381  unsigned int port;
382  unsigned char addr[16];
383  } Locator;
384 
385  typedef sequence<Locator> LocatorSeq;
386 #if defined(_WIN32) && !defined(__MINGW32__)
387  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<Locator>;
388 #endif
389 
393  typedef struct ParticipantLocator {
394  unsigned int participant_id;
395  unsigned int participant_id_max;
398 
399  typedef sequence<ParticipantLocator> ParticipantLocatorSeq;
400 #if defined(_WIN32) && !defined(__MINGW32__)
401  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<ParticipantLocator>;
402 #endif
403 
409  typedef struct COREDX_CPP_CLASS_API PeerParticipantQosPolicy {
410  ParticipantLocatorSeq value;
411  unsigned char strict_match;
412  // constructor, copy constructor, assignment, destructor
413  PeerParticipantQosPolicy(){ init(); }
414  PeerParticipantQosPolicy(const PeerParticipantQosPolicy &other) { copy(&other); }
415  PeerParticipantQosPolicy & operator=(const PeerParticipantQosPolicy & other) { this->clear(); this->copy(&other); return *this;}
416  ~PeerParticipantQosPolicy() { clear(); }
417 
418  void init() { }
419  void copy(const PeerParticipantQosPolicy * from) { if (from) { this->value = from->value; this->strict_match = from->strict_match; }}
420  void clear() { this->value.clear(); }
422 
426  typedef struct COREDX_CPP_CLASS_API RTPSWriterQosPolicy {
427  Duration_t heartbeat_period;
428  Duration_t nack_response_delay;
429  Duration_t nack_suppress_delay;
430  Duration_t ack_deadline;
431  unsigned int min_buffer_size;
432  unsigned int max_buffer_size;
433  unsigned char apply_filters;
434  unsigned char enable_batch_msg;
435  unsigned char send_typecode;
436  unsigned char require_acks;
437  DDS_Duration_t reliable_sample_hold_time;
439  void init() {}
440  void copy(const RTPSWriterQosPolicy * from) { if (from) *this = *from; }
441  void clear() {}
443 
447  typedef struct COREDX_CPP_CLASS_API RTPSReaderQosPolicy {
449  unsigned char accept_batch_msg;
450  unsigned char send_typecode;
451  unsigned char send_initial_nack;
452  unsigned int precache_max_samples;
453  LocatorSeq locators;
455  void init() {}
456  void copy(const RTPSReaderQosPolicy * from) {
457  if (from) {
458  this->heartbeat_response_delay = from->heartbeat_response_delay;
459  this->accept_batch_msg = from->accept_batch_msg;
460  this->send_typecode = from->send_typecode;
461  this->send_initial_nack = from->send_initial_nack;
462  this->precache_max_samples = from->precache_max_samples;
463  this->locators = from->locators;
464  }
465  }
466  void clear() {}
467  RTPSReaderQosPolicy & operator=( const RTPSReaderQosPolicy & rhs ) {
468  if ( this == &rhs )
469  return *this;
470  clear();
471  copy(&rhs);
472  return *this;
473  }
474 
476 
484 
489  typedef struct COREDX_CPP_CLASS_API DiscoveryQosPolicy {
491  DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE guid_pid;
492  Duration_t dpd_push_period;
493  Duration_t dpd_lease_duration;
494  Duration_t heartbeat_period;
495  Duration_t nack_response_delay;
496  Duration_t nack_suppress_delay;
497  unsigned int min_buffer_size;
498  unsigned int max_buffer_size;
500  unsigned char send_initial_nack;
501  unsigned char send_msglen_submsg;
503  // constructor, copy constructor, assignment, destructor
504  void init() {}
505  void copy(const DiscoveryQosPolicy * from) { if (from) *this = *from; }
506  void clear() {}
508 
512  typedef struct COREDX_CPP_CLASS_API ThreadModelQosPolicy {
513  unsigned char use_threads;
514  unsigned char create_listener_thread;
516  // constructor, copy constructor, assignment, destructor
517  void init() {}
518  void copy(const ThreadModelQosPolicy * from) { if (from) *this = *from; }
519  void clear() {}
521 
522  // -------------------------------------------------------------
523  // Entity Quality of Service
524  // -------------------------------------------------------------
525 
532  class COREDX_CPP_CLASS_API DomainParticipantFactoryQos {
533  public:
537 
541  DomainParticipantFactoryQos & operator=( const DomainParticipantFactoryQos & rhs );
542  };
543 
553  class COREDX_CPP_CLASS_API DomainParticipantQos {
554  public:
566  void clear();
568  DomainParticipantQos & operator=( const DomainParticipantQos & rhs );
569  };
570 
580  class COREDX_CPP_CLASS_API TopicQos
581  {
582  public:
603  TopicQos();
604  ~TopicQos();
605  TopicQos( const TopicQos & q );
606  TopicQos & operator=( const TopicQos & rhs );
607  };
608 
619  class COREDX_CPP_CLASS_API DataWriterQos
620  {
621  public:
649  DataWriterQos();
650  ~DataWriterQos();
651  DataWriterQos( const DataWriterQos & q );
652  DataWriterQos & operator=( const DataWriterQos & rhs );
653  };
654 
664  class COREDX_CPP_CLASS_API PublisherQos
665  {
666  public:
688  PublisherQos();
689  ~PublisherQos();
690  PublisherQos( const PublisherQos & q );
691  PublisherQos & operator=( const PublisherQos & rhs );
692  };
693 
704  class COREDX_CPP_CLASS_API DataReaderQos
705  {
706  public:
735  DataReaderQos();
736  ~DataReaderQos();
737  DataReaderQos( const DataReaderQos & q );
738  DataReaderQos & operator=( const DataReaderQos & rhs );
739  };
740 
751  class COREDX_CPP_CLASS_API SubscriberQos
752  {
753  public:
775  SubscriberQos();
776  ~SubscriberQos();
777  SubscriberQos( const SubscriberQos & q );
778  SubscriberQos & operator=( const SubscriberQos & rhs );
779  };
780 
781 
782  // -------------------------------------------------------------
783  // PRE-DEFINED VALUES
784  // -------------------------------------------------------------
785  const long LENGTH_UNLIMITED = DDS_LENGTH_UNLIMITED;
786  const long DURATION_INFINITE_SEC = DDS_DURATION_INFINITE_SEC;
787  const unsigned long DURATION_INFINITE_NSEC = DDS_DURATION_INFINITE_NSEC;
788  const long DURATION_ZERO_SEC = DDS_DURATION_ZERO_SEC;
789  const unsigned long DURATION_ZERO_NSEC = DDS_DURATION_ZERO_NSEC;
790  const long TIMESTAMP_INVALID_SEC = DDS_TIMESTAMP_INVALID_SEC;
791  const unsigned long TIMESTAMP_INVALID_NSEC = DDS_TIMESTAMP_INVALID_NSEC;
792 
793 #define TIMESTAMP_INVALID { DDS_TIMESTAMP_INVALID_SEC, DDS_TIMESTAMP_INVALID_NSEC }
794 
795  // InstanceHandle codes
796  const InstanceHandle_t HANDLE_NIL = DDS_HANDLE_NIL;
797  const InstanceHandle_t HANDLE_DEFAULT = DDS_HANDLE_DEFAULT;
798  const InstanceHandle_t HANDLE_NOT_ENABLED = DDS_HANDLE_NOT_ENABLED;
799 
800  // Return codes
801  const ReturnCode_t RETCODE_OK = DDS_RETCODE_OK;
802  const ReturnCode_t RETCODE_ERROR = DDS_RETCODE_ERROR;
803  const ReturnCode_t RETCODE_UNSUPPORTED = DDS_RETCODE_UNSUPPORTED;
804  const ReturnCode_t RETCODE_BAD_PARAMETER = DDS_RETCODE_BAD_PARAMETER;
805  const ReturnCode_t RETCODE_PRECONDITION_NOT_MET = DDS_RETCODE_PRECONDITION_NOT_MET;
806  const ReturnCode_t RETCODE_OUT_OF_RESOURCES = DDS_RETCODE_OUT_OF_RESOURCES;
807  const ReturnCode_t RETCODE_NOT_ENABLED = DDS_RETCODE_NOT_ENABLED;
808  const ReturnCode_t RETCODE_IMMUTABLE_POLICY = DDS_RETCODE_IMMUTABLE_POLICY;
809  const ReturnCode_t RETCODE_INCONSISTENT_POLICY = DDS_RETCODE_INCONSISTENT_POLICY;
810  const ReturnCode_t RETCODE_ALREADY_DELETED = DDS_RETCODE_ALREADY_DELETED;
811  const ReturnCode_t RETCODE_TIMEOUT = DDS_RETCODE_TIMEOUT;
812  const ReturnCode_t RETCODE_NO_DATA = DDS_RETCODE_NO_DATA;
813 
814  // Sample states
815  const unsigned long READ_SAMPLE_STATE = DDS_READ_SAMPLE_STATE;
816  const unsigned long NOT_READ_SAMPLE_STATE = DDS_NOT_READ_SAMPLE_STATE;
817  const unsigned long ANY_SAMPLE_STATE = DDS_ANY_SAMPLE_STATE;
818 
819  // View states
820  const unsigned long NEW_VIEW_STATE = DDS_NEW_VIEW_STATE;
821  const unsigned long NOT_NEW_VIEW_STATE = DDS_NOT_NEW_VIEW_STATE;
822  const unsigned long ANY_VIEW_STATE = DDS_ANY_VIEW_STATE;
823 
824  // Instance states
825  const unsigned long ALIVE_INSTANCE_STATE = DDS_ALIVE_INSTANCE_STATE;
826  const unsigned long NOT_ALIVE_DISPOSED_INSTANCE_STATE = DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE;
827  const unsigned long NOT_ALIVE_NO_WRITERS_INSTANCE_STATE= DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE;
828  const unsigned long NOT_ALIVE_INSTANCE_STATE = DDS_NOT_ALIVE_INSTANCE_STATE;
829  const unsigned long ANY_INSTANCE_STATE = DDS_ANY_INSTANCE_STATE;
830 
831  const StatusKind NO_STATUS = DDS_NO_STATUS;
832  const StatusKind STATUS_MASK_NONE = DDS_NO_STATUS;
833  const StatusKind INCONSISTENT_TOPIC_STATUS = DDS_INCONSISTENT_TOPIC_STATUS;
834  const StatusKind OFFERED_DEADLINE_MISSED_STATUS = DDS_OFFERED_DEADLINE_MISSED_STATUS;
835  const StatusKind REQUESTED_DEADLINE_MISSED_STATUS = DDS_REQUESTED_DEADLINE_MISSED_STATUS;
836  const StatusKind OFFERED_INCOMPATIBLE_QOS_STATUS = DDS_OFFERED_INCOMPATIBLE_QOS_STATUS;
837  const StatusKind REQUESTED_INCOMPATIBLE_QOS_STATUS = DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS;
838  const StatusKind SAMPLE_LOST_STATUS = DDS_SAMPLE_LOST_STATUS;
839  const StatusKind SAMPLE_REJECTED_STATUS = DDS_SAMPLE_REJECTED_STATUS;
840  const StatusKind DATA_ON_READERS_STATUS = DDS_DATA_ON_READERS_STATUS;
841  const StatusKind DATA_AVAILABLE_STATUS = DDS_DATA_AVAILABLE_STATUS;
842  const StatusKind LIVELINESS_LOST_STATUS = DDS_LIVELINESS_LOST_STATUS;
843  const StatusKind LIVELINESS_CHANGED_STATUS = DDS_LIVELINESS_CHANGED_STATUS;
844  const StatusKind PUBLICATION_MATCHED_STATUS = DDS_PUBLICATION_MATCHED_STATUS;
845  const StatusKind SUBSCRIPTION_MATCHED_STATUS = DDS_SUBSCRIPTION_MATCHED_STATUS;
846  const StatusKind ALL_STATUS = DDS_ALL_STATUS;
847 
848  const QosPolicyId_t USERDATA_QOS_POLICY_ID = DDS_USERDATA_QOS_POLICY_ID;
849  const QosPolicyId_t DURABILITY_QOS_POLICY_ID = DDS_DURABILITY_QOS_POLICY_ID;
850  const QosPolicyId_t PRESENTATION_QOS_POLICY_ID = DDS_PRESENTATION_QOS_POLICY_ID;
851  const QosPolicyId_t DEADLINE_QOS_POLICY_ID = DDS_DEADLINE_QOS_POLICY_ID;
852  const QosPolicyId_t LATENCYBUDGET_QOS_POLICY_ID = DDS_LATENCYBUDGET_QOS_POLICY_ID;
853  const QosPolicyId_t OWNERSHIP_QOS_POLICY_ID = DDS_OWNERSHIP_QOS_POLICY_ID;
854  const QosPolicyId_t OWNERSHIPSTRENGTH_QOS_POLICY_ID = DDS_OWNERSHIPSTRENGTH_QOS_POLICY_ID;
855  const QosPolicyId_t LIVELINESS_QOS_POLICY_ID = DDS_LIVELINESS_QOS_POLICY_ID;
856  const QosPolicyId_t TIMEBASEDFILTER_QOS_POLICY_ID = DDS_TIMEBASEDFILTER_QOS_POLICY_ID;
857  const QosPolicyId_t PARTITION_QOS_POLICY_ID = DDS_PARTITION_QOS_POLICY_ID;
858  const QosPolicyId_t RELIABILITY_QOS_POLICY_ID = DDS_RELIABILITY_QOS_POLICY_ID;
859  const QosPolicyId_t DESTINATIONORDER_QOS_POLICY_ID = DDS_DESTINATIONORDER_QOS_POLICY_ID;
860  const QosPolicyId_t HISTORY_QOS_POLICY_ID = DDS_HISTORY_QOS_POLICY_ID;
861  const QosPolicyId_t RESOURCELIMITS_QOS_POLICY_ID = DDS_RESOURCELIMITS_QOS_POLICY_ID;
862  const QosPolicyId_t ENTITYFACTORY_QOS_POLICY_ID = DDS_ENTITYFACTORY_QOS_POLICY_ID;
863  const QosPolicyId_t WRITERDATALIFECYCLE_QOS_POLICY_ID = DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID;
864  const QosPolicyId_t READERDATALIFECYCLE_QOS_POLICY_ID = DDS_READERDATALIFECYCLE_QOS_POLICY_ID;
865  const QosPolicyId_t TOPICDATA_QOS_POLICY_ID = DDS_TOPICDATA_QOS_POLICY_ID;
866  const QosPolicyId_t GROUPDATA_QOS_POLICY_ID = DDS_GROUPDATA_QOS_POLICY_ID;
867  const QosPolicyId_t TRANSPORTPRIORITY_QOS_POLICY_ID = DDS_TRANSPORTPRIORITY_QOS_POLICY_ID;
868  const QosPolicyId_t LIFESPAN_QOS_POLICY_ID = DDS_LIFESPAN_QOS_POLICY_ID;
869  const QosPolicyId_t DURABILITYSERVICE_QOS_POLICY_ID = DDS_DURABILITYSERVICE_QOS_POLICY_ID;
870  const QosPolicyId_t DATA_REPRESENTATION_QOS_POLICY_ID = DDS_DATA_REPRESENTATION_QOS_POLICY_ID;
871 
872  COREDX_CPP_CONST char * USERDATA_QOS_POLICY_NAME ;
873  COREDX_CPP_CONST char * DURABILITY_QOS_POLICY_NAME ;
874  COREDX_CPP_CONST char * PRESENTATION_QOS_POLICY_NAME ;
875  COREDX_CPP_CONST char * DEADLINE_QOS_POLICY_NAME ;
876  COREDX_CPP_CONST char * LATENCYBUDGET_QOS_POLICY_NAME ;
877  COREDX_CPP_CONST char * OWNERSHIP_QOS_POLICY_NAME ;
878  COREDX_CPP_CONST char * OWNERSHIPSTRENGTH_QOS_POLICY_NAME ;
879  COREDX_CPP_CONST char * LIVELINESS_QOS_POLICY_NAME ;
880  COREDX_CPP_CONST char * TIMEBASEDFILTER_QOS_POLICY_NAME ;
881  COREDX_CPP_CONST char * PARTITION_QOS_POLICY_NAME ;
882  COREDX_CPP_CONST char * RELIABILITY_QOS_POLICY_NAME ;
883  COREDX_CPP_CONST char * DESTINATIONORDER_QOS_POLICY_NAME ;
884  COREDX_CPP_CONST char * HISTORY_QOS_POLICY_NAME ;
885  COREDX_CPP_CONST char * RESOURCELIMITS_QOS_POLICY_NAME ;
886  COREDX_CPP_CONST char * ENTITYFACTORY_QOS_POLICY_NAME ;
887  COREDX_CPP_CONST char * WRITERDATALIFECYCLE_QOS_POLICY_NAME ;
888  COREDX_CPP_CONST char * READERDATALIFECYCLE_QOS_POLICY_NAME ;
889  COREDX_CPP_CONST char * TOPICDATA_QOS_POLICY_NAME ;
890  COREDX_CPP_CONST char * GROUPDATA_QOS_POLICY_NAME ;
891  COREDX_CPP_CONST char * TRANSPORTPRIORITY_QOS_POLICY_NAME ;
892  COREDX_CPP_CONST char * LIFESPAN_QOS_POLICY_NAME ;
893  COREDX_CPP_CONST char * DURABILITYSERVICE_POLICY_NAME ;
894  COREDX_CPP_CONST char * DATA_REPRESENTATION_POLICY_NAME ;
895 
896  COREDX_CPP_CONST DomainParticipantQos PARTICIPANT_QOS_DEFAULT ;
897  COREDX_CPP_CONST TopicQos TOPIC_QOS_DEFAULT ;
898  COREDX_CPP_CONST PublisherQos PUBLISHER_QOS_DEFAULT ;
899  COREDX_CPP_CONST SubscriberQos SUBSCRIBER_QOS_DEFAULT ;
900  COREDX_CPP_CONST DataWriterQos DATAWRITER_QOS_DEFAULT ;
901  COREDX_CPP_CONST DataReaderQos DATAREADER_QOS_DEFAULT ;
902  COREDX_CPP_CONST DataWriterQos DATAWRITER_QOS_USE_TOPIC_QOS;
903  COREDX_CPP_CONST DataReaderQos DATAREADER_QOS_USE_TOPIC_QOS;
904 
905  // -------------------------------------------------------------
906  // ENTITY
907  // -------------------------------------------------------------
912  class COREDX_CPP_CLASS_API Entity
913  {
914  public:
922  virtual StatusCondition * get_statuscondition();
923 
927  virtual StatusMask get_status_changes()=0;
934  virtual ReturnCode_t enable();
938  virtual InstanceHandle_t get_instance_handle();
939 
940  protected:
941  Entity( );
942  virtual ~Entity();
943  void init(struct _Entity * e);
944  struct _Entity * _entity;
945  class StatusCondition * _sc;
946  }; // class Entity
947 
948 
949  // -------------------------------------------------------------
950  // DOMAIN ENTITY
951  // -------------------------------------------------------------
956  class COREDX_CPP_CLASS_API DomainEntity : public Entity
957  {
958  public:
959  DomainEntity( struct _Entity * e );
960  virtual ~DomainEntity() {};
961  };
962 
969  class COREDX_CPP_CLASS_API DomainParticipantFactory
970  {
971 
972  public:
976  static DomainParticipantFactory * get_instance();
977  static void destroy(); // delete the single DomainParticipantFactory instance
978 
985  static ReturnCode_t set_license( const char * license );
986 
998  DomainParticipant * create_participant( DomainId_t domain_id,
999  const DomainParticipantQos & qos,
1000  DomainParticipantListener * a_listener,
1001  StatusMask mask);
1008  ReturnCode_t delete_participant ( DomainParticipant * a_participant );
1014  DomainParticipant * lookup_participant ( DomainId_t domain_id );
1022  ReturnCode_t set_default_participant_qos ( const DomainParticipantQos & qos );
1027  ReturnCode_t get_default_participant_qos ( DomainParticipantQos & qos);
1028  ReturnCode_t get_default_participant_qos ( DomainParticipantQos * qos);
1035  ReturnCode_t set_qos ( const DomainParticipantFactoryQos & qos );
1040  ReturnCode_t get_qos ( DomainParticipantFactoryQos & qos );
1041 
1042 
1043  private:
1044  DomainParticipantFactory() ; // constructor
1045  ~DomainParticipantFactory(); // destructor
1046 
1047  static void check_cpp_assumptions();
1048  };
1049 
1050 
1051  extern "C" void dp_offered_deadline_missed_wrapper( struct _DataWriter * the_c_writer,
1052  OfferedDeadlineMissedStatus status);
1053  extern "C" void dp_offered_incompatible_qos_wrapper( struct _DataWriter * the_c_writer,
1054  OfferedIncompatibleQosStatus status );
1055  extern "C" void dp_liveliness_lost_wrapper( struct _DataWriter * the_c_writer,
1056  LivelinessLostStatus status );
1057  extern "C" void dp_publication_matched_wrapper( struct _DataWriter * the_c_writer,
1058  PublicationMatchedStatus status );
1059  extern "C" void dp_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1060  extern "C" void dp_data_available_wrapper ( struct _DataReader * the_reader );
1061  extern "C" void dp_sample_rejected_wrapper ( struct _DataReader * the_reader,
1062  SampleRejectedStatus status );
1063  extern "C" void dp_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1064  LivelinessChangedStatus status );
1065  extern "C" void dp_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1066  RequestedDeadlineMissedStatus status );
1067  extern "C" void dp_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1068  RequestedIncompatibleQosStatus status );
1069  extern "C" void dp_subscription_matched_wrapper( struct _DataReader * the_reader,
1070  SubscriptionMatchedStatus status );
1071  extern "C" void dp_sample_lost_wrapper ( struct _DataReader * the_reader,
1072  SampleLostStatus status );
1073  extern "C" void dp_inconsistent_topic_wrapper( struct _Topic * the_topic,
1074  InconsistentTopicStatus status );
1075 
1076  // -------------------------------------------------------------
1077  // DOMAIN PARTICIPANT
1078  // -------------------------------------------------------------
1087  class COREDX_CPP_CLASS_API DomainParticipant : public Entity
1088  {
1089  friend class DomainParticipantFactory;
1090  friend class WaitSet;
1091  public:
1092 
1097  ReturnCode_t get_qos( DomainParticipantQos & qos);
1102  ReturnCode_t set_qos( const DomainParticipantQos & qos);
1103 
1112  StatusMask get_status_changes();
1121  ReturnCode_t set_listener( DomainParticipantListener * a_listener,
1122  StatusMask mask);
1132  DomainParticipantListener * get_listener( );
1140  class Publisher * create_publisher ( const PublisherQos & qos,
1141  PublisherListener * a_listener,
1142  StatusMask mask);
1150  ReturnCode_t delete_publisher ( class Publisher * p);
1158  class Subscriber * create_subscriber( const SubscriberQos & qos,
1159  SubscriberListener * a_listener,
1160  StatusMask mask);
1168  ReturnCode_t delete_subscriber( class Subscriber * s);
1180  class Topic * create_topic( const char * topic_name,
1181  const char * type_name,
1182  const TopicQos & qos,
1183  TopicListener * a_listener,
1184  StatusMask mask);
1193  ReturnCode_t delete_topic( class Topic * a_topic);
1206  class Topic * find_topic ( const char * topic_name,
1207  const Duration_t & timeout);
1208  class Topic * find_topic ( const char * topic_name,
1209  const DDS_Duration_t & timeout);
1215  class TopicDescription * lookup_topicdescription( const char * name );
1226  class Subscriber * get_builtin_subscriber();
1235  ReturnCode_t ignore_participant ( InstanceHandle_t &handle);
1244  ReturnCode_t ignore_topic ( InstanceHandle_t &handle);
1252  ReturnCode_t ignore_publication ( InstanceHandle_t &handle);
1260  ReturnCode_t ignore_subscription ( InstanceHandle_t &handle);
1265  DomainId_t get_domain_id( );
1275  ReturnCode_t delete_contained_entities( );
1287  ReturnCode_t assert_liveliness( );
1295  ReturnCode_t set_default_publisher_qos( const PublisherQos & qos);
1300  ReturnCode_t get_default_publisher_qos( PublisherQos & qos);
1301  ReturnCode_t get_default_publisher_qos( PublisherQos * qos);
1309  ReturnCode_t set_default_subscriber_qos( const SubscriberQos & qos);
1314  ReturnCode_t get_default_subscriber_qos( SubscriberQos & qos);
1315  ReturnCode_t get_default_subscriber_qos( SubscriberQos * qos);
1323  ReturnCode_t set_default_topic_qos( const TopicQos & qos);
1328  ReturnCode_t get_default_topic_qos( TopicQos & qos);
1329  ReturnCode_t get_default_topic_qos( TopicQos * qos);
1337  ReturnCode_t get_discovered_participants( InstanceHandleSeq * participant_handles );
1344  ReturnCode_t get_discovered_participant_data( ParticipantBuiltinTopicData * participant_data,
1345  InstanceHandle_t & participant_handle );
1353  ReturnCode_t get_discovered_topics( InstanceHandleSeq * topic_handles);
1385  class ContentFilteredTopic *create_contentfilteredtopic( const char * name,
1386  class Topic * related_topic,
1387  const char * filter_expression,
1388  const StringSeq & filter_parameters);
1398  ReturnCode_t delete_contentfilteredtopic( class ContentFilteredTopic * a_cft);
1404  class MultiTopic * create_multitopic( const char * name,
1405  const char * type_name,
1406  const char * subscription_expression,
1407  const StringSeq & expression_params);
1413  ReturnCode_t delete_multitopic( class MultiTopic * a_multitopic);
1420  ReturnCode_t get_discovered_topic_data( TopicBuiltinTopicData * topic_data,
1421  InstanceHandle_t & topic_handle );
1422 
1429  bool contains_entity( InstanceHandle_t a_handle);
1433  ReturnCode_t get_current_time( Time_t * current_time);
1434  ReturnCode_t get_current_time( Time_t & current_time);
1435 
1447  ReturnCode_t do_work( const Duration_t & time_slice );
1448 
1452  ReturnCode_t builtin_wait_for_acknowledgments( const Duration_t & max_wait );
1456  ReturnCode_t get_guid(GUID_t * guid);
1457 
1458  ReturnCode_t add_transport(struct CoreDX_Transport * transport);
1459 
1460  DDS_DomainParticipant get_core_participant();
1461 
1462 
1463  //----
1464  // Inherited from class Entity
1465 
1481  ReturnCode_t enable( );
1486  InstanceHandle_t get_instance_handle( );
1487 
1488  protected:
1489  struct DP_impl * _impl;
1490 
1491  // Create / Destory via DomainParticipantFactory
1493  ~DomainParticipant();
1494 
1495  void init();
1496  // Listener Wrapper Methods
1497  static void initialize_listener( DDS_DomainParticipantListener * core_listener,
1498  StatusMask nil_listener );
1499 
1500  friend void dp_offered_deadline_missed_wrapper( struct _DataWriter * the_c_writer,
1501  OfferedDeadlineMissedStatus status);
1502  friend void dp_offered_incompatible_qos_wrapper( struct _DataWriter * the_c_writer,
1503  OfferedIncompatibleQosStatus status );
1504  friend void dp_liveliness_lost_wrapper( struct _DataWriter * the_c_writer,
1505  LivelinessLostStatus status );
1506  friend void dp_publication_matched_wrapper( struct _DataWriter * the_c_writer,
1507  PublicationMatchedStatus status );
1508  friend void dp_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1509  friend void dp_data_available_wrapper ( struct _DataReader * the_reader );
1510  friend void dp_sample_rejected_wrapper ( struct _DataReader * the_reader,
1511  SampleRejectedStatus status );
1512  friend void dp_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1513  LivelinessChangedStatus status );
1514  friend void dp_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1515  RequestedDeadlineMissedStatus status );
1516  friend void dp_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1517  RequestedIncompatibleQosStatus status );
1518  friend void dp_subscription_matched_wrapper( struct _DataReader * the_reader,
1519  SubscriptionMatchedStatus status );
1520  friend void dp_sample_lost_wrapper ( struct _DataReader * the_reader,
1521  SampleLostStatus status );
1522  friend void dp_inconsistent_topic_wrapper( struct _Topic * the_topic,
1523  InconsistentTopicStatus status );
1524 
1525  public:
1533  ReturnCode_t register_type( TypeSupport * ts, const char * type_name );
1549  ReturnCode_t unregister_type( const char * type_name );
1559  int check_version( const char * major, const char * minor, const char * patch);
1560  int validate_version( const char * tname, const char * major, const char * minor, const char * patch);
1561  TypeSupport * get_type( const char * type_name );
1565  void print_stats( const char * topic_name = NULL );
1566  void get_topic_stats_str( const char * topic_name, DDS::OctetSeq * oseq );
1567  void get_topic_stats( const char * topic_name, CoreDX_TopicStats_t * topic_stats );
1568 
1569  }; // class DomainParticipant
1570 
1571 
1572  extern "C" void pub_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
1573  OfferedDeadlineMissedStatus status);
1574  extern "C" void pub_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
1575  OfferedIncompatibleQosStatus status );
1576  extern "C" void pub_liveliness_lost_wrapper( _DataWriter * the_c_writer,
1577  LivelinessLostStatus status );
1578  extern "C" void pub_publication_matched_wrapper( _DataWriter * the_c_writer,
1579  PublicationMatchedStatus status );
1580 
1581  // -------------------------------------------------------------
1582  // PUBLISHER
1583  // -------------------------------------------------------------
1588  class COREDX_CPP_CLASS_API Publisher : public Entity
1589  {
1590  friend class DomainParticipant;
1591  public:
1607  ReturnCode_t enable( );
1612  InstanceHandle_t get_instance_handle( );
1621  StatusMask get_status_changes();
1622 
1627  class DomainParticipant * get_participant( );
1641  class DataWriter * create_datawriter( Topic * a_topic,
1642  const DataWriterQos & qos,
1643  DataWriterListener * a_listener,
1644  StatusMask mask);
1650  ReturnCode_t delete_datawriter( DataWriter * a_datawriter);
1657  class DataWriter * lookup_datawriter( const char * topic_name);
1667  ReturnCode_t delete_contained_entities( );
1672  ReturnCode_t set_qos( const PublisherQos & qos);
1686  ReturnCode_t get_qos( PublisherQos & qos);
1695  ReturnCode_t set_listener( PublisherListener * a_listener,
1696  StatusMask mask);
1706  class PublisherListener * get_listener( );
1710  ReturnCode_t suspend_publications( );
1714  ReturnCode_t resume_publications( );
1718  ReturnCode_t begin_coherent_changes( );
1722  ReturnCode_t end_coherent_changes( );
1731  ReturnCode_t wait_for_acknowledgments(const Duration_t & max_wait);
1732 
1741  ReturnCode_t set_default_datawriter_qos( const DataWriterQos & qos);
1746  ReturnCode_t get_default_datawriter_qos( DataWriterQos & qos);
1747  ReturnCode_t get_default_datawriter_qos( DataWriterQos * qos);
1754  ReturnCode_t copy_from_topic_qos( DataWriterQos & a_datawriter_qos,
1755  const TopicQos & a_topic_qos);
1756  protected:
1757  // Create / Destory via DomainParticipant
1758  Publisher();
1759  ~Publisher();
1760 
1761  // Listener Wrapper Methods
1762  static void initialize_listener( DDS_PublisherListener * core_listener,
1763  StatusMask nil_listeners );
1764  friend void pub_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
1765  OfferedDeadlineMissedStatus status);
1766  friend void pub_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
1767  OfferedIncompatibleQosStatus status );
1768  friend void pub_liveliness_lost_wrapper( _DataWriter * the_c_writer,
1769  LivelinessLostStatus status );
1770  friend void pub_publication_matched_wrapper( _DataWriter * the_c_writer,
1771  PublicationMatchedStatus status );
1772 
1773  struct PUB_impl * _impl;
1774  }; // class Publisher
1775 
1776  extern "C" void sub_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1777  extern "C" void sub_data_available_wrapper ( struct _DataReader * the_reader );
1778  extern "C" void sub_sample_rejected_wrapper ( struct _DataReader * the_reader,
1779  SampleRejectedStatus status );
1780  extern "C" void sub_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1781  LivelinessChangedStatus status );
1782  extern "C" void sub_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1783  RequestedDeadlineMissedStatus status );
1784  extern "C" void sub_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1785  RequestedIncompatibleQosStatus status );
1786  extern "C" void sub_subscription_matched_wrapper( struct _DataReader * the_reader,
1787  SubscriptionMatchedStatus status );
1788  extern "C" void sub_sample_lost_wrapper ( struct _DataReader * the_reader,
1789  SampleLostStatus status );
1790  // -------------------------------------------------------------
1791  // SUBSCRIBER
1792  // -------------------------------------------------------------
1797  class COREDX_CPP_CLASS_API Subscriber : public Entity
1798  {
1799  friend class DomainParticipant;
1800  public:
1816  ReturnCode_t enable( );
1821  InstanceHandle_t get_instance_handle( );
1830  StatusMask get_status_changes();
1844  DataReader * create_datareader( TopicDescription * a_topic,
1845  const DataReaderQos & qos,
1846  DataReaderListener* a_listener,
1847  StatusMask mask);
1857  ReturnCode_t delete_datareader( class DataReader * a_datareader);
1868  ReturnCode_t delete_contained_entities( );
1876  DataReader * lookup_datareader( const char * topic_name);
1893  ReturnCode_t get_datareaders( DataReaderSeq * readers,
1894  SampleStateMask sample_states,
1895  ViewStateMask view_states,
1896  InstanceStateMask instance_states) ;
1901  DomainParticipant * get_participant();
1906  ReturnCode_t set_qos( const SubscriberQos & qos);
1919  ReturnCode_t get_qos( SubscriberQos & qos);
1928  ReturnCode_t set_listener( SubscriberListener * a_listener,
1929  StatusMask mask);
1939  SubscriberListener * get_listener( );
1947  ReturnCode_t begin_access( );
1952  ReturnCode_t end_access( );
1961  ReturnCode_t set_default_datareader_qos( const DataReaderQos & qos);
1966  ReturnCode_t get_default_datareader_qos( DataReaderQos & qos);
1967  ReturnCode_t get_default_datareader_qos( DataReaderQos * qos);
1974  ReturnCode_t copy_from_topic_qos( DataReaderQos & a_datareader_qos,
1975  const TopicQos & a_topic_qos);
1976 
1977  protected:
1978  // Create / Destroy via DomainParticipant
1979  Subscriber( );
1980  ~Subscriber();
1981 
1982  static void initialize_listener( DDS_SubscriberListener * core_listener,
1983  StatusMask nil_listeners );
1984  friend void sub_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1985  friend void sub_data_available_wrapper ( struct _DataReader * the_reader );
1986  friend void sub_sample_rejected_wrapper ( struct _DataReader * the_reader,
1987  SampleRejectedStatus status );
1988  friend void sub_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1989  LivelinessChangedStatus status );
1990  friend void sub_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1991  RequestedDeadlineMissedStatus status );
1992  friend void sub_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1993  RequestedIncompatibleQosStatus status );
1994  friend void sub_subscription_matched_wrapper( struct _DataReader * the_reader,
1995  SubscriptionMatchedStatus status );
1996  friend void sub_sample_lost_wrapper ( struct _DataReader * the_reader,
1997  SampleLostStatus status );
1998 
1999  struct SUB_impl * _impl;
2000  }; // class Subscriber
2001 
2002  // -------------------------------------------------------------
2003  // TOPIC DESCRIPTION
2004  // -------------------------------------------------------------
2010  class COREDX_CPP_CLASS_API TopicDescription
2011  {
2012  friend class Subscriber;
2013  friend class DomainParticipant;
2014  public:
2015  TopicDescription();
2016  virtual ~TopicDescription();
2017 
2021  virtual DomainParticipant * get_participant( );
2026  virtual const char * get_type_name ( );
2031  virtual const char * get_name ( );
2032  private:
2033  struct _TopicDescription * _td;
2034  };
2035 
2036  extern "C" void top_inconsistent_topic_wrapper( struct _Topic * topic,
2037  InconsistentTopicStatus status );
2038  // -------------------------------------------------------------
2039  // TOPIC
2040  // -------------------------------------------------------------
2051  class COREDX_CPP_CLASS_API Topic : public TopicDescription,
2052  public Entity
2053  {
2054  friend class DomainParticipant;
2055  friend class Publisher;
2056  public:
2060  const char * get_type_name ( );
2064  const char * get_name ( );
2068  DomainParticipant * get_participant( );
2074  StatusMask get_status_changes();
2089  ReturnCode_t enable( );
2094  ReturnCode_t set_qos( const TopicQos & qos);
2106  ReturnCode_t get_qos( TopicQos & qos);
2115  ReturnCode_t set_listener( TopicListener * a_listener,
2116  StatusMask mask);
2126  TopicListener * get_listener( );
2131  ReturnCode_t get_inconsistent_topic_status( InconsistentTopicStatus * a_status);
2132  protected:
2133  Topic( );
2134  virtual ~Topic();
2135 
2136  static void initialize_listener( DDS_TopicListener * core_listener,
2137  StatusMask nil_listeners );
2138  friend void top_inconsistent_topic_wrapper( struct _Topic * topic,
2139  InconsistentTopicStatus status );
2140  struct _Topic * _topic;
2141  TopicListener * _listener;
2142  };
2143 
2144  // -------------------------------------------------------------
2145  // CONTENT FILTERED TOPIC
2146  // -------------------------------------------------------------
2179  class COREDX_CPP_CLASS_API ContentFilteredTopic : public TopicDescription
2180  {
2181  friend class DomainParticipant;
2182  friend class Publisher;
2183  public:
2184  const char * get_type_name ( );
2185  const char * get_name ( );
2190  Topic * get_related_topic( );
2195  ReturnCode_t get_expression_parameters( StringSeq & params);
2206  ReturnCode_t set_expression_parameters( const StringSeq & params);
2207  protected:
2209  virtual ~ContentFilteredTopic();
2210 
2211  struct _ContentFilteredTopic * _cf_topic;
2212  Topic * _related_topic;
2213  };
2214 
2215  extern "C" void dw_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
2216  OfferedDeadlineMissedStatus status);
2217  extern "C" void dw_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
2218  OfferedIncompatibleQosStatus status );
2219  extern "C" void dw_liveliness_lost_wrapper( _DataWriter * the_c_writer,
2220  LivelinessLostStatus status );
2221  extern "C" void dw_publication_matched_wrapper( _DataWriter * the_c_writer,
2222  PublicationMatchedStatus status );
2223  // -------------------------------------------------------------
2224  // DATA WRITER
2225  // -------------------------------------------------------------
2233  class COREDX_CPP_CLASS_API DataWriter : public Entity
2234  {
2235  friend class Publisher;
2236  friend class DomainParticipant;
2237  public:
2251  ReturnCode_t enable( );
2256  InstanceHandle_t get_instance_handle( );
2262  StatusMask get_status_changes();
2267  ReturnCode_t set_qos(const DataWriterQos & qos);
2279  ReturnCode_t get_qos(DataWriterQos & qos);
2288  ReturnCode_t set_listener(DataWriterListener * a_listener,
2289  StatusMask mask);
2299  DataWriterListener * get_listener();
2304  class Topic * get_topic();
2309  class Publisher * get_publisher();
2318  ReturnCode_t wait_for_acknowledgments(const Duration_t & max_wait);
2328  ReturnCode_t assert_liveliness();
2334  InstanceHandle_t register_instance(const void * instance_data);
2340  InstanceHandle_t register_instance_w_timestamp(const void * instance_data,
2341  const Time_t & source_timestamp);
2348  ReturnCode_t unregister_instance( const void * instance_data,
2349  const InstanceHandle_t handle);
2356  ReturnCode_t unregister_instance_w_timestamp( const void * instance_data,
2357  const InstanceHandle_t handle,
2358  const Time_t & source_timestamp);
2371  ReturnCode_t write( const void * instance_data,
2372  const InstanceHandle_t handle);
2385  ReturnCode_t write_w_timestamp(const void * instance_data,
2386  const InstanceHandle_t handle,
2387  const Time_t & source_timestamp);
2394  ReturnCode_t dispose(const void * instance_data,
2395  const InstanceHandle_t instance_handle);
2402  ReturnCode_t dispose_w_timestamp( const void * instance_data,
2403  const InstanceHandle_t instance_handle,
2404  const Time_t & source_timestamp);
2412  ReturnCode_t get_key_value( void * key_holder,
2413  const InstanceHandle_t handle);
2418  InstanceHandle_t lookup_instance( const void * instance_data);
2419 
2424  ReturnCode_t write_request( const void * instance_data,
2425  const InstanceHandle_t h,
2426  DDS::SampleIdentity_t * req_id );
2431  ReturnCode_t write_reply( const void * instance_data,
2432  const InstanceHandle_t h,
2433  DDS::SampleIdentity_t * rep_id);
2434 
2435 
2436  // Access the status
2441  ReturnCode_t get_liveliness_lost_status ( LivelinessLostStatus *status );
2446  ReturnCode_t get_offered_deadline_missed_status ( OfferedDeadlineMissedStatus *status );
2451  ReturnCode_t get_offered_incompatible_qos_status( OfferedIncompatibleQosStatus *status );
2456  ReturnCode_t get_publication_matched_status ( PublicationMatchedStatus *status );
2464  ReturnCode_t get_matched_subscriptions( InstanceHandleSeq * subscription_handles);
2471  ReturnCode_t get_matched_subscription_data( SubscriptionBuiltinTopicData * subscription_data,
2472  InstanceHandle_t & subscription_handle);
2473 
2474  ReturnCode_t get_cache_stats( CacheStatistics & stats );
2478  ReturnCode_t get_guid(GUID_t * guid);
2479 
2480  virtual DataWriter * narrow() = 0;
2481  protected:
2482  // Create / Destroy via Publisher
2483  DataWriter( );
2484  virtual ~DataWriter();
2485 
2486  static void initialize_listener( DDS_DataWriterListener * core_listener,
2487  StatusMask nil_listener );
2488  friend void dw_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
2489  OfferedDeadlineMissedStatus status);
2490  friend void dw_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
2491  OfferedIncompatibleQosStatus status );
2492  friend void dw_liveliness_lost_wrapper( _DataWriter * the_c_writer,
2493  LivelinessLostStatus status );
2494  friend void dw_publication_matched_wrapper( _DataWriter * the_c_writer,
2495  PublicationMatchedStatus status );
2496 
2497  struct DW_impl * _impl;
2498  }; // class DataWrtier
2499 
2500 
2501  extern "C" void dr_requested_deadline_missed_wrapper( _DataReader * dr, RequestedDeadlineMissedStatus status );
2502  extern "C" void dr_requested_incompatible_qos_wrapper( _DataReader * dr, RequestedIncompatibleQosStatus status );
2503  extern "C" void dr_sample_rejected_wrapper( _DataReader * dr, SampleRejectedStatus status );
2504  extern "C" void dr_liveliness_changed_wrapper( _DataReader * dr, LivelinessChangedStatus status );
2505  extern "C" void dr_data_available_wrapper( _DataReader * dr );
2506  extern "C" void dr_subscription_matched_wrapper( _DataReader * dr, SubscriptionMatchedStatus status );
2507  extern "C" void dr_sample_lost_wrapper( _DataReader * dr, SampleLostStatus status );
2508 
2509  // -------------------------------------------------------------
2510  // DATA READER
2511  // -------------------------------------------------------------
2520  class COREDX_CPP_CLASS_API DataReader : public Entity
2521  {
2522  friend class Subscriber;
2523  friend class DomainParticipant;
2524  friend class coredx::rpc::Requester;
2525 
2526  public:
2531  InstanceHandle_t get_instance_handle( );
2537  StatusMask get_status_changes ( );
2551  ReturnCode_t enable ( );
2552  StatusCondition * get_statuscondition( );
2553 
2560  ReadCondition * create_readcondition( SampleStateMask sample_states,
2561  ViewStateMask view_states,
2562  InstanceStateMask instance_states);
2573  ReturnCode_t delete_readcondition( ReadCondition * a_condition);
2582  ReturnCode_t delete_contained_entities( );
2587  ReturnCode_t set_qos( const DataReaderQos & qos);
2599  ReturnCode_t get_qos( DataReaderQos & qos);
2608  ReturnCode_t set_listener( DataReaderListener * a_listener,
2609  StatusMask mask);
2619  DataReaderListener * get_listener();
2625  TopicDescription * get_topicdescription( );
2630  Subscriber * get_subscriber( );
2635  ReturnCode_t get_sample_rejected_status ( SampleRejectedStatus * status);
2640  ReturnCode_t get_liveliness_changed_status( LivelinessChangedStatus * status);
2645  ReturnCode_t get_requested_deadline_missed_status ( RequestedDeadlineMissedStatus * status);
2650  ReturnCode_t get_requested_incompatible_qos_status( RequestedIncompatibleQosStatus * status);
2655  ReturnCode_t get_subscription_matched_status ( SubscriptionMatchedStatus * status);
2660  ReturnCode_t get_sample_lost_status ( SampleLostStatus * status);
2665  ReturnCode_t wait_for_historical_data( const Duration_t & max_wait);
2673  ReturnCode_t get_matched_publications( InstanceHandleSeq * publication_handles);
2680  ReturnCode_t get_matched_publication_data( PublicationBuiltinTopicData * publication_data,
2681  const InstanceHandle_t publication_handle);
2714  QueryCondition * create_querycondition( SampleStateMask sample_states,
2715  ViewStateMask view_states,
2716  InstanceStateMask instance_states,
2717  const char * query_expression,
2718  const StringSeq & query_parameters);
2719 
2720  // BASE read/take operations
2761  ReturnCode_t read( Sequence * received_data,
2762  SampleInfoSeq * sample_infos,
2763  long max_samples,
2764  SampleStateMask sample_states,
2765  ViewStateMask view_states,
2766  InstanceStateMask instance_states);
2807  ReturnCode_t take( Sequence * received_data,
2808  SampleInfoSeq * sample_infos,
2809  long max_samples,
2810  SampleStateMask sample_states,
2811  ViewStateMask view_states,
2812  InstanceStateMask instance_states);
2821  ReturnCode_t read_w_condition( Sequence * received_data,
2822  SampleInfoSeq * sample_infos,
2823  long max_samples,
2824  ReadCondition * a_condition);
2833  ReturnCode_t take_w_condition( Sequence * received_data,
2834  SampleInfoSeq * sample_infos,
2835  long max_samples,
2836  ReadCondition * a_condition);
2844  ReturnCode_t read_next_sample( void * received_data,
2845  SampleInfo * sample_info);
2853  ReturnCode_t take_next_sample( void * received_data,
2854  SampleInfo * sample_info);
2863  ReturnCode_t read_instance(Sequence * received_data,
2864  SampleInfoSeq * sample_infos,
2865  long max_samples,
2866  InstanceHandle_t a_handle,
2867  SampleStateMask sample_states,
2868  ViewStateMask view_states,
2869  InstanceStateMask instance_states);
2878  ReturnCode_t take_instance(Sequence * received_data,
2879  SampleInfoSeq * sample_infos,
2880  long max_samples,
2881  InstanceHandle_t a_handle,
2882  SampleStateMask sample_states,
2883  ViewStateMask view_states,
2884  InstanceStateMask instance_states);
2893  ReturnCode_t read_next_instance( Sequence * received_data,
2894  SampleInfoSeq * sample_infos,
2895  long max_samples,
2896  InstanceHandle_t previous_handle,
2897  SampleStateMask sample_states,
2898  ViewStateMask view_states,
2899  InstanceStateMask instance_states);
2908  ReturnCode_t take_next_instance( Sequence * received_data,
2909  SampleInfoSeq * sample_infos,
2910  long max_samples,
2911  InstanceHandle_t previous_handle,
2912  SampleStateMask sample_states,
2913  ViewStateMask view_states,
2914  InstanceStateMask instance_states);
2923  ReturnCode_t read_next_instance_w_condition( Sequence * received_data,
2924  SampleInfoSeq * sample_infos,
2925  long max_samples,
2926  InstanceHandle_t previous_handle,
2927  ReadCondition * a_condition);
2936  ReturnCode_t take_next_instance_w_condition( Sequence * received_data,
2937  SampleInfoSeq * sample_infos,
2938  long max_samples,
2939  InstanceHandle_t previous_handle,
2940  ReadCondition * a_condition);
2955  ReturnCode_t return_loan( Sequence * received_data,
2956  SampleInfoSeq * sample_infos);
2964  ReturnCode_t get_key_value( void * key_holder,
2965  InstanceHandle_t handle);
2972  InstanceHandle_t lookup_instance( void * instance_data);
2976  ReturnCode_t get_guid( GUID_t * guid );
2977 
2978  virtual DataReader * narrow() = 0;
2979  ReturnCode_t get_cache_stats( CacheStatistics & stats );
2980  ReturnCode_t print_cache( );
2981 
2982  protected:
2983  DataReader( );
2984  virtual ~DataReader( );
2985 
2986  static void initialize_listener( DDS_DataReaderListener * core_listener,
2987  StatusMask nil_listeners );
2988  friend void dr_requested_deadline_missed_wrapper( _DataReader * dr, RequestedDeadlineMissedStatus status );
2989  friend void dr_requested_incompatible_qos_wrapper( _DataReader * dr, RequestedIncompatibleQosStatus status );
2990  friend void dr_sample_rejected_wrapper( _DataReader * dr, SampleRejectedStatus status );
2991  friend void dr_liveliness_changed_wrapper( _DataReader * dr, LivelinessChangedStatus status );
2992  friend void dr_data_available_wrapper( _DataReader * dr );
2993  friend void dr_subscription_matched_wrapper( _DataReader * dr, SubscriptionMatchedStatus status );
2994  friend void dr_sample_lost_wrapper( _DataReader * dr, SampleLostStatus status );
2995 
2996  struct DR_impl * _impl;
2997  }; // class DataReader
2998 
2999 
3000  // -------------------------------------------------------------
3001  // CONDITION
3002  // -------------------------------------------------------------
3010  class COREDX_CPP_CLASS_API Condition
3011  {
3012  //friend ConditionSeq;
3013  friend class WaitSet;
3014  public:
3020  virtual bool get_trigger_value();
3021  protected:
3022  Condition( struct _Condition * c );
3023  Condition(void);
3024  virtual ~Condition();
3025  struct _Condition * _condition;
3026  }; // class Condition
3027 
3028 
3029  // -------------------------------------------------------------
3030  // GUARD CONDITION
3031  // -------------------------------------------------------------
3037  class COREDX_CPP_CLASS_API GuardCondition : public Condition
3038  {
3039  public:
3040  GuardCondition( );
3041  GuardCondition( struct _GuardCondition * gc ); // deprecated - do not use
3042  ~GuardCondition( );
3048  bool get_trigger_value();
3058  ReturnCode_t set_trigger_value( bool v );
3059  protected:
3060  struct _GuardCondition * _guard_condition;
3061  }; // class GuardCondition
3062 
3063  // -------------------------------------------------------------
3064  // STATUS CONDITION
3065  // -------------------------------------------------------------
3071  class COREDX_CPP_CLASS_API StatusCondition : public Condition
3072  {
3073  friend class Entity;
3074  public:
3080  bool get_trigger_value();
3085  ReturnCode_t set_enabled_statuses( StatusMask mask );
3090  StatusMask get_enabled_statuses();
3094  Entity * get_entity();
3095  protected:
3096  StatusCondition( struct _StatusCondition * sc );
3097  ~StatusCondition();
3098  struct _StatusCondition * _status_condition;
3099  }; // Class StatusCondition
3100 
3101  // -------------------------------------------------------------
3102  // READ CONDITION
3103  // -------------------------------------------------------------
3112  class COREDX_CPP_CLASS_API ReadCondition : public Condition
3113  {
3114  friend class DataReader;
3115  public:
3121  bool get_trigger_value();
3125  DataReader * get_datareader();
3129  SampleStateKind get_sample_state_mask();
3133  ViewStateKind get_view_state_mask();
3137  InstanceStateKind get_instance_state_mask();
3138  protected:
3139  ReadCondition( struct _ReadCondition * rc );
3140  ~ReadCondition();
3141  struct _ReadCondition * _read_condition;
3142  }; // class ReadCondition
3143 
3144  // -------------------------------------------------------------
3145  // QUERY CONDITION
3146  // -------------------------------------------------------------
3154  class COREDX_CPP_CLASS_API QueryCondition : public ReadCondition
3155  {
3156  friend class DataReader;
3157  public:
3158  QueryCondition( struct _QueryCondition * qc );
3159  ~QueryCondition();
3166  const char * get_query_expression ( void );
3178  ReturnCode_t get_query_parameters ( StringSeq & seq);
3194  ReturnCode_t set_query_parameters ( const StringSeq & seq);
3195 
3196  protected:
3197  struct _QueryCondition * _query_condition;
3198  }; // class QueryCondition
3199 
3200  // -------------------------------------------------------------
3201  // WAIT SET
3202  // -------------------------------------------------------------
3211  class COREDX_CPP_CLASS_API WaitSet
3212  {
3213  public:
3214  WaitSet( );
3215  ~WaitSet();
3222  ReturnCode_t attach_condition( Condition & a_condition );
3225  ReturnCode_t attach_condition( Condition * a_condition );
3231  ReturnCode_t detach_condition( Condition & a_condition );
3234  ReturnCode_t detach_condition( Condition * a_condition );
3249  ReturnCode_t wait ( ConditionSeq & active_conditions,
3250  const Duration_t & timeout );
3251 
3252  ReturnCode_t wait_ex ( DomainParticipant * dp,
3253  ConditionSeq & active_conditions,
3254  const Duration_t & timeout );
3260  ReturnCode_t get_conditions ( ConditionSeq & attached_conditions );
3261  protected:
3262  struct _WaitSet * _wait_set;
3263  };
3264 
3265  // -------------------------------------------------------------
3266  // LISTENER
3267  // -------------------------------------------------------------
3268  class COREDX_CPP_CLASS_API Listener
3269  {
3270  public:
3271  Listener() { nil_listeners = 0; }
3272  virtual ~Listener() {};
3273 
3274  /* nil_listeners usage:
3275  * Set bits for those listeners you wish to declare as 'NIL' listeners.
3276  * Default is NO BITS SET, in other words, all of your listeners should
3277  * be called if enabled; there are no 'NIL' listeners.
3278  * In generally, this will only be used by those applications installing
3279  * both listeners AND condition variables on the same statuses.
3280  */
3281  StatusMask nil_listeners;
3282  };
3283 
3284  // -------------------------------------------------------------
3285  // DATA WRITER LISTENER
3286  // -------------------------------------------------------------
3298  class COREDX_CPP_CLASS_API DataWriterListener : virtual public Listener
3299  {
3300  public:
3301  DataWriterListener() {};
3302  virtual ~DataWriterListener() {};
3310  virtual void on_offered_deadline_missed ( DataWriter * /* the_writer */,
3311  const OfferedDeadlineMissedStatus & /* status */) {};
3318  virtual void on_offered_incompatible_qos( DataWriter * /* the_writer */,
3319  const OfferedIncompatibleQosStatus & /* status */) {};
3325  virtual void on_liveliness_lost ( DataWriter * /* the_writer */,
3326  const LivelinessLostStatus & /* status */) {};
3333  virtual void on_publication_matched ( DataWriter * /* the_writer */,
3334  const PublicationMatchedStatus & /* status */) {};
3335  };
3336 
3337  // -------------------------------------------------------------
3338  // PUBLISHER LISTENER
3339  // -------------------------------------------------------------
3351  class COREDX_CPP_CLASS_API PublisherListener : virtual public DataWriterListener
3352  {
3353  public:
3354  PublisherListener() {};
3355  virtual ~PublisherListener() {};
3356  };
3357 
3358  // -------------------------------------------------------------
3359  // TOPIC LISTENER
3360  // -------------------------------------------------------------
3371  class COREDX_CPP_CLASS_API TopicListener : virtual public Listener
3372  {
3373  public:
3374  TopicListener() {};
3375  virtual ~TopicListener() {};
3381  virtual void on_inconsistent_topic( Topic * /* the_topic */,
3382  const InconsistentTopicStatus & /* status */) {};
3383  };
3384 
3385  // -------------------------------------------------------------
3386  // DATA READER LISTENER
3387  // -------------------------------------------------------------
3399  class COREDX_CPP_CLASS_API DataReaderListener : virtual public Listener
3400  {
3401  public:
3402  DataReaderListener() {};
3403  virtual ~DataReaderListener() {};
3410  virtual void on_requested_deadline_missed ( DataReader * /* the_reader */,
3411  const RequestedDeadlineMissedStatus & /* status */) {};
3418  virtual void on_requested_incompatible_qos( DataReader * /* the_reader */,
3419  const RequestedIncompatibleQosStatus & /* status */) {};
3425  virtual void on_sample_rejected ( DataReader * /* the_reader */,
3426  const SampleRejectedStatus & /* status */) {};
3432  virtual void on_liveliness_changed ( DataReader * /* the_reader */,
3433  const LivelinessChangedStatus & /* status */) {};
3439  virtual void on_data_available ( DataReader * /* the_reader */) {};
3445  virtual void on_subscription_matched ( DataReader * /* the_reader */,
3446  const SubscriptionMatchedStatus & /* status */) {};
3452  virtual void on_sample_lost ( DataReader * /* the_reader */,
3453  const SampleLostStatus & /* status */) {};
3454  };
3455 
3456  // -------------------------------------------------------------
3457  // SUBSCRIBER LISTENER
3458  // -------------------------------------------------------------
3470  class COREDX_CPP_CLASS_API SubscriberListener : virtual public DataReaderListener
3471  {
3472  public:
3473  SubscriberListener() {};
3474  virtual ~SubscriberListener() {};
3481  virtual void on_data_on_readers( Subscriber * /* the_subscriber */ ) {};
3482  };
3483 
3484  // -------------------------------------------------------------
3485  // DOMAIN PARTICIPANT LISTENER
3486  // -------------------------------------------------------------
3498  class COREDX_CPP_CLASS_API DomainParticipantListener : virtual public PublisherListener,
3499  virtual public TopicListener,
3500  virtual public SubscriberListener
3501  {
3502  public:
3504  virtual ~DomainParticipantListener() {};
3505  };
3506 
3507  /* DDS_Time_t operator +(const DDS_Time_t &t1, const DDS_Duration_t &t2);
3508  DDS_Time_t operator +(const DDS_Time_t &t1, const DDS_Time_t &t2);
3509  DDS_Duration_t operator -(const DDS_Time_t &t1, const DDS_Time_t &t2);
3510  bool operator <(const DDS_Time_t &t1, const DDS_Time_t &t2);
3511  bool operator <=(const DDS_Time_t &t1, const DDS_Time_t &t2);
3512  bool operator ==(const DDS_Time_t &t1, const DDS_Time_t &t2);
3513  bool operator >=(const DDS_Time_t &t1, const DDS_Time_t &t2);
3514  bool operator >(const DDS_Time_t &t1, const DDS_Time_t &t2);
3515 
3516  DDS_Duration_t operator +(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3517  DDS_Duration_t operator -(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3518  bool operator <(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3519  bool operator <=(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3520  bool operator ==(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3521  bool operator >=(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3522  bool operator >(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3523  */
3524 
3525  COREDX_CPP_API Time_t operator+(const Time_t &t1, const Duration_t & t2);
3526  COREDX_CPP_API Time_t operator+(const Time_t &t1, const Time_t & t2);
3527  COREDX_CPP_API Duration_t operator-(const Time_t &t1, const Time_t & t2);
3528  COREDX_CPP_API bool operator <(const Time_t &t1, const Time_t &t2);
3529  COREDX_CPP_API bool operator <=(const Time_t &t1, const Time_t &t2);
3530  COREDX_CPP_API bool operator ==(const Time_t &t1, const Time_t &t2);
3531  COREDX_CPP_API bool operator >=(const Time_t &t1, const Time_t &t2);
3532  COREDX_CPP_API bool operator >(const Time_t &t1, const Time_t &t2);
3533 
3534  COREDX_CPP_API Duration_t operator+(const Duration_t &t1, const Duration_t & t2);
3535  COREDX_CPP_API Duration_t operator-(const Duration_t &t1, const Duration_t & t2);
3536 
3537  COREDX_CPP_API void String_free(char * str);
3538  COREDX_CPP_API char * String_dup(const char * other);
3539 
3540 } // namespace DDS
3541 
3542 
3543 #endif
unsigned int precache_max_samples
Maximum number of samples held in pre-cache [only for RELIABLE readers].
Definition: dds.hh:452
DataTagQosPolicy data_tags
Security related data_tags (sequence of name,value pairs).
Definition: dds.hh:730
Definition: dds_builtin.hh:1919
The SubscriberListener provides asynchronous notification of Subscriber events.
Definition: dds.hh:3470
Duration_t dpd_push_period
Multicast DiscoveredParticipantData each period.
Definition: dds.hh:492
HistoryQosPolicy history
The data history requested by the DataReader.
Definition: dds.hh:713
long ReturnCode_t
Definition: dds.hh:208
ResourceLimitsQosPolicy resource_limits
The resource limits set on the DataWriter.
Definition: dds.hh:630
Determines instance ownership in the case of multple writers. CoreDX DDS supports both SHARED_OWNERSH...
Definition: dds_builtin.hh:600
Definition: dds_builtin.hh:1828
LoggingQosPolicy logging
Controls the logging behavior of the DataReader.
Definition: dds.hh:732
The DataWriter entity provides an interface for the application to publish (write) data...
Definition: dds.hh:2233
Status related to the on_offered_incompatible_qos listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:345
Definition: dds.hh:298
Encapsulates statistics available from a DataReader or DataWriter.
Definition: dds_types.h:420
The DurabilityQosPolicy controls the durablity of data.
Definition: dds_builtin.hh:353
Configures a list of DomainParticipant peers to attempt communication with.
Definition: dds.hh:409
DomainParticipantFactory constructs DomainParticipants. The.
Definition: dds.hh:969
ReaderDataLifecycleQosPolicy reader_data_lifecycle
Controls the auto-purge behavior of the DataReader.
Definition: dds.hh:718
TransportPriorityQosPolicy transport_priority
The transport priority supported by the DataWriter.
Definition: dds.hh:631
EntityNameQosPolicy entity_name
Controls the Entity name of the DataWriter.
Definition: dds.hh:645
The DomainParticipant is used to configure, create and destroy Publisher, Subscriber and Topic object...
Definition: dds.hh:1087
LatencyBudgetQosPolicy latency_budget
The latency allowed by the DataWriter.
Definition: dds.hh:625
Defines the strength, or priority, of a Writer. The strength is used to determine ownership in the ca...
Definition: dds_builtin.hh:652
unsigned int participant_id
participant id start
Definition: dds.hh:394
DurabilityQosPolicy durability
The durability policy of the Topic.
Definition: dds.hh:584
Status related to the on_liveliness_changed listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:297
LocatorSeq locators
Definition: dds.hh:453
EntityNameQosPolicy entity_name
Controls the Entity name of the DomainParticipant.
Definition: dds.hh:557
A hint to the middleware to help configure the transport priority mechanism.
Definition: dds_builtin.hh:217
DiscoveryQosPolicyDiscoveryKind
This enumeration contains the kinds of Discovery.
Definition: dds.hh:480
EntityFactoryQosPolicy entity_factory
Controls the behavior of the Subscriber.create_datareader() operation.
Definition: dds.hh:771
LivelinessQosPolicy liveliness
Identifies the mechanism used to detect and maintain livelines of DataWriters on the Topic...
Definition: dds.hh:588
virtual void on_offered_deadline_missed(DataWriter *, const OfferedDeadlineMissedStatus &)
Definition: dds.hh:3310
LifespanQosPolicy lifespan
The expiration time for old samples managed by the DataWriter.
Definition: dds.hh:632
DestinationOrderQosPolicy destination_order
The destination order logic offered by the DataWriter.
Definition: dds.hh:628
LivelinessQosPolicy liveliness
The liveliness mechanism offered by the DataWriter.
Definition: dds.hh:626
WriterDataLifecycleQosPolicy writer_data_lifecycle
Indicates if unregistered instances should be automatically disposed by the DataWriter.
Definition: dds.hh:636
virtual void on_requested_incompatible_qos(DataReader *, const RequestedIncompatibleQosStatus &)
Definition: dds.hh:3418
Definition: dds.hh:30
PresentationQosPolicy presentation
Controls the presentation of groups of changes.
Definition: dds.hh:754
Describes the data representation used by a topic.
Definition: dds_builtin.hh:1296
ResourceLimitsQosPolicy resource_limits
The resource limitations for the Topic.
Definition: dds.hh:592
ThreadModelQosPolicy thread_model
Controls the threading behavior of the DomainParticipant.
Definition: dds.hh:561
Indicates the level of reliability offered/provided by the Entity. If kind is RELIABLE_RELIABILITY_QO...
Definition: dds_builtin.hh:941
Duration_t autopurge_disposed_samples_delay
delay after which it is ok to purge samples from instances that are disposed
Definition: dds.hh:331
DDS::sequence< void * > Sequence
sequence of void pointers
Definition: dds.hh:260
Structure that holds Publisher Quality of Service policies.
Definition: dds.hh:664
TimeBasedFilterQosPolicy time_based_filter
The maximum update frequency required/desired by the DataReader.
Definition: dds.hh:717
Structure that holds DomainParticipantFactory Quality of Service policies.
Definition: dds.hh:532
Status related to the on_inconsistent_topic listener methods of the DDS_TopicListener structure...
Definition: dds_types.h:242
RTPSReaderQosPolicy rtps_reader
Controls aspects of the RTPS Reader protocol for the DataReader.
Definition: dds.hh:733
EntityFactoryQosPolicy entity_factory
Controls the behavior of the DomainParticipant &#39;create&#39; operations.
Definition: dds.hh:536
OwnershipStrengthQosPolicy ownership_strength
The measure of &#39;ownership strength&#39; offered by the DataWriter.
Definition: dds.hh:635
EntityNameQosPolicy entity_name
Controls the Entity name of the DataReader.
Definition: dds.hh:731
LoggingQosPolicy logging
Controls the logging behavior of the DataWriter.
Definition: dds.hh:646
DDS::sequence< Condition * > ConditionSeq
sequence of Condition pointers
Definition: dds.hh:258
uint32_t nanosec
Definition: dds_types.h:75
LivelinessQosPolicy liveliness
The liveliness mechanism requested by the DataReader.
Definition: dds.hh:710
unsigned char enable_batch_msg
use the &#39;BATCH&#39; RTPS message to send data if all Readers accept BATCH
Definition: dds.hh:434
Definition: dds_builtin.hh:1218
TypeConsistencyEnforcementQosPolicy type_consistency
Influences the algorithm that matches DataReaders and DataWriters based on their data type compatibil...
Definition: dds.hh:723
Duration_t nack_response_delay
The nack_response_delay to configure for builtin writers.
Definition: dds.hh:495
unsigned char send_typecode
send TYPECODE info for associated data type
Definition: dds.hh:435
DDS_Duration_t reliable_sample_hold_time
Time after which a sample may be flushed even if it hasn&#39;t been ACK&#39;d,.
Definition: dds.hh:437
unsigned char send_initial_nack
send a ACKNACK immediately after matching with a new Writer
Definition: dds.hh:500
Duration_t nack_response_delay
ammount of time allowed for responding to NACKs
Definition: dds.hh:428
Specifies the lifecycle behavior of data instances managed by the DataWriter. If autodispose_unregist...
Definition: dds.hh:315
Duration_t dpd_lease_duration
How long we consider a discoverd Participant to be alive without hearing from them.
Definition: dds.hh:493
ReliabilityQosPolicy reliability
The transport reliability requested by the DataReader.
Definition: dds.hh:711
A WaitSet maintains a set of Condition objects and allows the application to wait until one or more o...
Definition: dds.hh:3211
DestinationOrderQosPolicy destination_order
The ordering of received samples on the Topic will be either by SOURCE or RECEPTION timestamp...
Definition: dds.hh:590
DDS::sequence< InstanceHandle_t > InstanceHandleSeq
sequence of InstanceHandle_t s
Definition: dds.hh:256
EntityFactoryQosPolicy entity_factory
Controls the behavior of the Publisher.create_datawriter() operation.
Definition: dds.hh:684
The Subscriber configures, creates, manages and destroys DataReaders.
Definition: dds.hh:1797
ReliabilityQosPolicy reliability
Indicates the level of transport reliability on the Topic.
Definition: dds.hh:589
DataRepresentationQosPolicy representation
Informs DataReader(s) of the single data representation supported by this Writer. This must be consis...
Definition: dds.hh:637
Duration_t nack_suppress_delay
ammount of time to ignore NACKs after a repair
Definition: dds.hh:429
OwnershipQosPolicy ownership
The type of &#39;ownership&#39; offered by the DataReader.
Definition: dds.hh:716
LatencyBudgetQosPolicy latency_budget
The latency requested by the DataReader.
Definition: dds.hh:709
unsigned int max_buffer_size
max size in bytes of written data
Definition: dds.hh:432
The DomainParticipant will connect to the CoreDX DDS CDD for discovery.
Definition: dds.hh:482
virtual void on_sample_lost(DataReader *, const SampleLostStatus &)
Definition: dds.hh:3452
unsigned char autoenable_created_entities
should created entities be automatically enabled
Definition: dds.hh:299
Status related to the on_liveliness_lost listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:286
virtual void on_requested_deadline_missed(DataReader *, const RequestedDeadlineMissedStatus &)
Definition: dds.hh:3410
PartitionQosPolicy partition
Establishes a logical data partition.
Definition: dds.hh:762
ContentFilteredTopic provides a topic that may exclude data based on a specified filter. The ContentFilteredTopic is associated with another un-filtered topic related_topic. It applies a filter to the data of the related topic. If a data sample passes the filter, it will be made available to a DataReader associated with the ContentFilteredTopic.
Definition: dds.hh:2179
Definition: dds_types.h:72
TopicDescription is an abstract &#39;class&#39; that provides the foundation for Topic, ContentFilteredTopic...
Definition: dds.hh:2010
EntityNameQosPolicy entity_name
Controls the Entity name of the Subscriber.
Definition: dds.hh:772
The DataReaderListener provides asynchronous notification of DataReader events.
Definition: dds.hh:3399
Controls the amount and kind of information that is logged.
Definition: dds.hh:363
UserDataQosPolicy user_data
A sequence of octets associated with the DataWriter.
Definition: dds.hh:633
DDS::sequence< DataReader * > DataReaderSeq
sequence of DataReader pointers
Definition: dds.hh:254
unsigned char require_acks
Require ACKS from readers before flushing an otherwise required sample from writer cache...
Definition: dds.hh:436
virtual void on_offered_incompatible_qos(DataWriter *, const OfferedIncompatibleQosStatus &)
Definition: dds.hh:3318
A ReadCondition is a specialized Condition associated with a DataReader.
Definition: dds.hh:3112
Definition: dds_builtin_basic.hh:140
EntityFactoryQosPolicy entity_factory
Controls the behavior of the DomainParticipant create operations.
Definition: dds.hh:556
UserDataQosPolicy user_data
A sequence of octets associated with the DataReader.
Definition: dds.hh:715
GroupDataQosPolicy group_data
A sequence of octets associated with the Publisher.
Definition: dds.hh:683
unsigned char send_initial_nack
send a ACKNACK immediately after matching with a new Writer
Definition: dds.hh:451
LoggingQosPolicy logging
Controls the logging behavior of the Subscriber.
Definition: dds.hh:773
The DataReader entity allows the application to subscribe to and read data.
Definition: dds.hh:2520
A QueryCondition is a specialized ReadCondition which includes a filter.
Definition: dds.hh:3154
DDS::DiscoveryQosPolicyDiscoveryKind discovery_kind
the kind of discovery to employ
Definition: dds.hh:490
Duration_t autopurge_nowriter_samples_delay
delay after which it is ok to purge samples from instances with no writer(s)
Definition: dds.hh:330
virtual void on_data_available(DataReader *)
Definition: dds.hh:3439
A GuardCondition is a condition where the trigger_value is under application control.
Definition: dds.hh:3037
Structure that holds Subscriber Quality of Service policies.
Definition: dds.hh:751
Status related to the on_offered_deadline_missed listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:311
Specifies allowable latency.
Definition: dds_builtin.hh:541
DeadlineQosPolicy deadline
The requested update frequency for data instances.
Definition: dds.hh:708
unsigned int flags
flags to control logging output
Definition: dds.hh:364
UserDataQosPolicy user_data
A sequence of octets associated with a DomainParticipant.
Definition: dds.hh:555
The PublisherListener provides asynchronous notification of Publisher events.
Definition: dds.hh:3351
Topic is the basic description of data to be published or subscribed.
Definition: dds.hh:2051
Network address.
Definition: dds.hh:379
DeadlineQosPolicy deadline
The deadline committed to by the DataWriter.
Definition: dds.hh:624
Holds a DDS_QosPolicyId_t value and a counter to indicate the number of events associated with that P...
Definition: dds_types.h:333
Definition: dds_builtin.hh:1775
unsigned char strict_match
Definition: dds.hh:411
virtual void on_subscription_matched(DataReader *, const SubscriptionMatchedStatus &)
Definition: dds.hh:3445
Duration_t heartbeat_response_delay
ammount of time allowed for responding to a heartbeat
Definition: dds.hh:448
The SampleInfo structure contains information associated with each sample.
Definition: dds_types.h:160
HistoryQosPolicy history
The amount of historical data maintained for the Topic.
Definition: dds.hh:591
Augment a DataWriter or DataReader with RPC specific information.
Definition: dds_builtin.hh:1458
A StatusCondition is a condition associated with an Entity.
Definition: dds.hh:3071
DDS::sequence< unsigned char > OctetSeq
sequence of octets
Definition: dds.hh:264
DataRepresentationQosPolicy representation
Informs DataWriter(s) of the data representation(s) supported by this Reader. This must be consistent...
Definition: dds.hh:719
RpcQosPolicy rpc
Configure RPC relevant settings: instance_name, related_entity, and topic_aliases.
Definition: dds.hh:641
Provides the DDS infrastructure.
Definition: dds_builtin_basic.hh:27
Duration_t heartbeat_response_delay
The heartbeat_response_delay to configure for builtin readers.
Definition: dds.hh:499
A Condition can be added to a WaitSet to provide synchronous event notification.
Definition: dds.hh:3010
Base class for all DDS Domain Entities.
Definition: dds.hh:956
GroupDataQosPolicy group_data
A sequence of octets associated with the Publisher.
Definition: dds.hh:770
PeerParticipantQosPolicy peer_participants
Specifies a list of DomainParticipant peers to attempt communication with. If empty, default Discovery is used.
Definition: dds.hh:559
RTPSWriterQosPolicy rtps_writer
Controls aspects of the RTPS Writer protocol for the DataWriter.
Definition: dds.hh:647
Controls the ammount of historical data maintained by a DataReader or DataWriter. ...
Definition: dds_builtin.hh:1087
TopicDataQosPolicy topic_data
A sequence of octets associated with a Topic.
Definition: dds.hh:583
OwnershipQosPolicy ownership
The type of &#39;ownership&#39; expected for data instances on the Topic.
Definition: dds.hh:595
unsigned int max_buffer_size
The max_buffer_size to configure for builtin writers.
Definition: dds.hh:498
Definition: dds.hh:347
Defines a logical data partition.
Definition: dds_builtin.hh:864
Allows the application to attach arbitrary information to a DomainParticipant, DataWriter or DataRead...
Definition: dds_builtin.hh:54
LoggingQosPolicy logging
Controls the logging behavior of the Publisher.
Definition: dds.hh:686
DestinationOrderQosPolicy destination_order
The destination order logic requested by the DataReader.
Definition: dds.hh:712
Allows the application to attach arbitrary information to a Publisher or Subscriber.
Definition: dds_builtin.hh:169
unsigned char accept_batch_msg
allow writers to use the &#39;BATCH&#39; RTPS message
Definition: dds.hh:449
rules for determining type consistency
Definition: dds_builtin.hh:1357
DDS_DOMAINID_TYPE_NATIVE DomainId_t
Definition: dds.hh:206
DDS::sequence< char * > StringSeq
sequence of character pointers (c strings)
Definition: dds.hh:262
The TopicListener provides asynchronous notification of Topic events.
Definition: dds.hh:3371
LatencyBudgetQosPolicy latency_budget
Identifies the &#39;urgency&#39; of the data on the Topic. The middleware uses this to batch data samples is ...
Definition: dds.hh:587
Definition: dds_builtin.hh:1624
PropertyQosPolicy properties
Additional name:value pair properties (if propagate=true, included in discovery)
Definition: dds.hh:562
QoS Policy for configuring aspects of the RTPS Reader Protocol.
Definition: dds.hh:447
virtual void on_sample_rejected(DataReader *, const SampleRejectedStatus &)
Definition: dds.hh:3425
Definition: dds_builtin_basic.hh:238
LoggingQosPolicy logging
Controls the logging behavior of the DomainParticipant.
Definition: dds.hh:558
DurabilityQosPolicy durability
The durability policy requested by the DataReader.
Definition: dds.hh:707
Duration_t ack_deadline
after which a realiable reader will be considered unresponsive
Definition: dds.hh:430
HistoryQosPolicy history
The data history maintained by the DataWriter.
Definition: dds.hh:629
Structure that holds Topic Quality of Service policies.
Definition: dds.hh:580
Structure that holds DataWriter Quality of Service policies.
Definition: dds.hh:619
unsigned int participant_id_max
participant id max
Definition: dds.hh:395
LifespanQosPolicy lifespan
The &#39;expiration time&#39; for old data samples on the Topic.
Definition: dds.hh:594
DeadlineQosPolicy deadline
Defines the expected update frequency for data instances within the Topic.
Definition: dds.hh:586
DurabilityServiceQosPolicy durability_service
The durability service configuration offered by the DataWriter.
Definition: dds.hh:623
unsigned long StatusMask
Definition: dds.hh:217
Describes a the location and identity of a potential peer DomainParticipant.
Definition: dds.hh:393
ReliabilityQosPolicy reliability
The transport reliability offered by the DataWriter.
Definition: dds.hh:627
Base class for all DDS Entities.
Definition: dds.hh:912
QoS Policy for configuring aspects of the Discovery and Builtin entities.
Definition: dds.hh:489
Duration_t heartbeat_period
period to transmit heartbeat messages if required
Definition: dds.hh:427
The DomainParticipantListener provides asynchronous notification of DomainParticipant events...
Definition: dds.hh:3498
The DataWriterListener provides asynchronous notification of DataWriter events.
Definition: dds.hh:3298
DataRepresentationQosPolicy representation
The data representation(s) supported by Writer(s) and Reader(s) of this topic. The first entry in the...
Definition: dds.hh:596
This QoS policy controls how each Subscriber orders received data samples.
Definition: dds_builtin.hh:1008
Duration_t nack_suppress_delay
The nack_suppress_delay to configure for builtin writers.
Definition: dds.hh:496
TransportPriorityQosPolicy transport_priority
The priority to be used for messages on the Topic.
Definition: dds.hh:593
Status related to the on_requested_deadline_missed listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:322
EntityNameQosPolicy entity_name
Controls the Entity name of the Topic.
Definition: dds.hh:600
DurabilityServiceQosPolicy durability_service
Configures the service supporting the TRANSIENT and PERSITENT durability kinds.
Definition: dds.hh:585
Controls the presentation of received data samples to the application. CoreDX DDS currently supports ...
Definition: dds_builtin.hh:415
Structure that holds DomainParticipant Quality of Service policies.
Definition: dds.hh:553
Determines the mechanism and parameters used by the application to determine whether an Entity is ali...
Definition: dds_builtin.hh:737
unsigned char autodispose_unregistered_instances
should the writer dispose instances that are unregistered
Definition: dds.hh:316
virtual void on_data_on_readers(Subscriber *)
Definition: dds.hh:3481
Allows the application to attach arbitrary information to a Topic QoS.
Definition: dds_builtin.hh:111
Status related to the on_publication_matched listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:371
Structure that holds DataReader Quality of Service policies.
Definition: dds.hh:704
DataTagQosPolicy data_tags
Security related data_tags (sequence of name,value pairs).
Definition: dds.hh:644
This QoS policy establishes a minimum update period for data instances.
Definition: dds_builtin.hh:483
PartitionQosPolicy partition
Establishes a logical data partition.
Definition: dds.hh:675
virtual void on_publication_matched(DataWriter *, const PublicationMatchedStatus &)
Definition: dds.hh:3333
Specifies the lifecycle behavior of data instances managed by the DataReader.
Definition: dds.hh:329
virtual void on_inconsistent_topic(Topic *, const InconsistentTopicStatus &)
Definition: dds.hh:3381
int sec
Definition: dds_types.h:74
DDS_HANDLE_TYPE_NATIVE InstanceHandle_t
Definition: dds.hh:207
DiscoveryQosPolicy discovery
Controls aspects of the Discovery and Builtin entities.
Definition: dds.hh:560
ParticipantLocatorSeq value
sequence of peer locators with which we should attempt communication
Definition: dds.hh:410
unsigned char create_listener_thread
should the DomainParticipant create a separate thread for invoking listener callback routines ...
Definition: dds.hh:514
The DomainParticipant will use the standard peer-to-peer discovery.
Definition: dds.hh:481
Status related to the on_subscription_matched listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:385
The Time_t structure contains data to define a time.
Definition: dds.hh:222
virtual void on_liveliness_changed(DataReader *, const LivelinessChangedStatus &)
Definition: dds.hh:3432
unsigned char apply_filters
apply ContentFilter(s) at the writer (writer side filtering)
Definition: dds.hh:433
RpcQosPolicy rpc
Configure RPC relevant settings: instance_name, related_entity, and topic_aliases.
Definition: dds.hh:727
The Publisher configures, creates, manages and destroys DataWriters.
Definition: dds.hh:1588
Status related to the on_requested_incompatible_qos listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:358
QoS Policy for configuring the threading behavior of the DomainParticipant.
Definition: dds.hh:512
Specifies the maximum duration of validity of the data written by the DataWriter. ...
Definition: dds_builtin.hh:268
LoggingQosPolicy logging
Controls the logging behavior of the Topic.
Definition: dds.hh:601
unsigned int min_buffer_size
min size in bytes of written data
Definition: dds.hh:431
unsigned int min_buffer_size
The min_buffer_size to configure for builtin writers.
Definition: dds.hh:497
virtual void on_liveliness_lost(DataWriter *, const LivelinessLostStatus &)
Definition: dds.hh:3325
A sequence of name-value pair &#39;tags&#39;.
Definition: dds_builtin.hh:1726
DDS::sequence< SampleInfo * > SampleInfoSeq
sequence of SampleInfo pointers
Definition: dds.hh:252
Defines a filter based on time between samples. The DataReader indicates that it wants at most one sa...
Definition: dds_builtin.hh:792
unsigned char use_threads
should the DomainParticipant use threads for internal work
Definition: dds.hh:513
Status related to the on_sample_lost listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:254
The Duration_t structure contains data to define a time duration.
Definition: dds_builtin_basic.hh:289
unsigned char send_msglen_submsg
include &#39;msglen&#39; submessage in RTPS header
Definition: dds.hh:501
QoS Policy for configuring aspects of the RTPS Writer Protocol.
Definition: dds.hh:426
EntityNameQosPolicy entity_name
Controls the Entity name of the Publisher.
Definition: dds.hh:685
unsigned char send_typecode
send TYPECODE info for associated data type
Definition: dds.hh:450
Duration_t heartbeat_period
The heartbeat_period to configure for builtin writers.
Definition: dds.hh:494
Locator participant_locator
locator identifying peer participant
Definition: dds.hh:396
Specifies the resources that the Service can use to maintain data samples and instances.
Definition: dds_builtin.hh:1141
DurabilityQosPolicy durability
The durability policy offered by the DataWriter.
Definition: dds.hh:622
PresentationQosPolicy presentation
Controls the presentation of groups of changes.
Definition: dds.hh:667
Status related to the on_sample_rejected listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:273
ResourceLimitsQosPolicy resource_limits
The resource limits set on the DataReader.
Definition: dds.hh:714
OwnershipQosPolicy ownership
The type of &#39;ownership&#39; offered by the DataWriter.
Definition: dds.hh:634

© 2009-2020 Twin Oaks Computing, Inc
Castle Rock, CO 80104
All rights reserved.