CoreDX DDS C++ Reference Manual
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-2016 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  // -------------------------------------------------------------
195  // BASIC TYPES
196  // -------------------------------------------------------------
197  typedef unsigned char Octet;
198  typedef DDS_DOMAINID_TYPE_NATIVE DomainId_t;
199  typedef DDS_HANDLE_TYPE_NATIVE InstanceHandle_t;
200  typedef long ReturnCode_t;
201  typedef long QosPolicyId_t;
202  typedef unsigned long SampleStateKind;
203  typedef unsigned long SampleStateMask;
204  typedef unsigned long ViewStateKind;
205  typedef unsigned long ViewStateMask;
206  typedef unsigned long InstanceStateKind;
207  typedef unsigned long InstanceStateMask;
208  typedef unsigned long StatusKind;
209  typedef unsigned long StatusMask;
214  struct Time_t
215  {
216  Time_t() : sec(0),nanosec(0) {};
217  Time_t(int32_t s, uint32_t nsec) : sec(s), nanosec(nsec) {};
218  Time_t(const DDS_Time_t & other)
219  : sec(other.sec), nanosec(other.nanosec) {}
220 
221  operator DDS_Time_t () const { DDS_Time_t retval; retval.sec = sec; retval.nanosec=nanosec; return retval; }
222  int32_t sec;
223  uint32_t nanosec;
224  };
225 
226 
230  typedef struct DDS_SampleInfo SampleInfo;
231 
232  /*
233  * The builtin data types
234  */
235  typedef struct DCPSParticipant ParticipantBuiltinTopicData;
236  typedef struct DCPSTopic TopicBuiltinTopicData;
237  typedef struct DCPSPublication PublicationBuiltinTopicData;
238  typedef struct DCPSSubscription SubscriptionBuiltinTopicData;
239 
240  // -------------------------------------------------------------
241  // Common Sequences
242  // -------------------------------------------------------------
257 
258  //disable warnings on extern before template instantiation
259  // (this is the only way to build Windows DLL, but it makes the Windows Compiler unhappy, odd.)
260 #if defined(_WIN32) && !defined(__MINGW32__)
261 # pragma warning (disable : 4231)
262  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<unsigned char>;
263  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<SampleInfo *>;
264  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<DataReader *>;
265  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<InstanceHandle_t>;
266  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<Condition *>;
267  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<char *>;
268  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<void *>;
269 #endif
270 
271 
272 } /* namespace DDS */
273 #include <dds/dds_builtin.hh>
274 
275 namespace DDS {
290  typedef struct COREDX_CPP_CLASS_API EntityFactoryQosPolicy {
293  void init() {}
294  void copy(const EntityFactoryQosPolicy * from) { if (from) *this = *from; }
295  void clear() {}
297 
307  typedef struct COREDX_CPP_CLASS_API WriterDataLifecycleQosPolicy {
310  void init() {}
311  void copy(const WriterDataLifecycleQosPolicy * from) { if (from) *this = *from; }
312  void clear() {}
321  typedef struct COREDX_CPP_CLASS_API ReaderDataLifecycleQosPolicy {
325  void init() {}
326  void copy(const ReaderDataLifecycleQosPolicy * from) { if (from) *this = *from; }
327  void clear() {}
329 
330  // -------------------------------------------------------------
331  // - CoreDX DDS QoS Extensions:
332  // -------------------------------------------------------------
339  typedef struct COREDX_CPP_CLASS_API EntityNameQosPolicy {
340  char value[COREDX_ENTITY_NAME_MAX];
342 
355  typedef struct COREDX_CPP_CLASS_API LoggingQosPolicy {
356  unsigned int flags;
357  /*
358  logging uri examples:
359  'file:///tmp/dds.log',
360  'stdout',
361  'stderr'
362  */
363  char uri[COREDX_LOGGING_URI_MAX];
365 
371  typedef struct Locator_t {
372  int kind;
373  unsigned int port;
374  unsigned char addr[16];
375  } Locator;
376 
380  typedef struct ParticipantLocator {
381  unsigned int participant_id;
382  unsigned int participant_id_max;
385 
386  typedef sequence<ParticipantLocator> ParticipantLocatorSeq;
387 #if defined(_WIN32) && !defined(__MINGW32__)
388  COREDX_CPP_TEMPLATE template class COREDX_CPP_CLASS_API DDS::sequence<ParticipantLocator>;
389 #endif
390 
396  typedef struct COREDX_CPP_CLASS_API PeerParticipantQosPolicy {
397  ParticipantLocatorSeq value;
398  unsigned char strict_match;
399  // constructor, copy constructor, assignment, destructor
400  PeerParticipantQosPolicy(){ init(); }
401  PeerParticipantQosPolicy(const PeerParticipantQosPolicy &other) { copy(&other); }
402  PeerParticipantQosPolicy & operator=(const PeerParticipantQosPolicy & other) { this->clear(); this->copy(&other); return *this;}
403  ~PeerParticipantQosPolicy() { clear(); }
404 
405  void init() { }
406  void copy(const PeerParticipantQosPolicy * from) { if (from) { this->value = from->value; this->strict_match = from->strict_match; }}
407  void clear() { this->value.clear(); }
409 
413  typedef struct COREDX_CPP_CLASS_API RTPSWriterQosPolicy {
414  Duration_t heartbeat_period;
415  Duration_t nack_response_delay;
416  Duration_t nack_suppress_delay;
417  Duration_t ack_deadline;
418  unsigned int min_buffer_size;
419  unsigned int max_buffer_size;
420  unsigned char apply_filters;
421  unsigned char enable_batch_msg;
422  unsigned char send_typecode;
424  void init() {}
425  void copy(const RTPSWriterQosPolicy * from) { if (from) *this = *from; }
426  void clear() {}
428 
432  typedef struct COREDX_CPP_CLASS_API RTPSReaderQosPolicy {
434  unsigned char accept_batch_msg;
435  unsigned char send_typecode;
436  unsigned char send_initial_nack;
437  unsigned int precache_max_samples;
439  void init() {}
440  void copy(const RTPSReaderQosPolicy * from) { if (from) *this = *from; }
441  void clear() {}
443 
451 
456  typedef struct COREDX_CPP_CLASS_API DiscoveryQosPolicy {
458  DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE guid_pid;
459  Duration_t dpd_push_period;
460  Duration_t dpd_lease_duration;
461  Duration_t heartbeat_period;
462  Duration_t nack_response_delay;
463  Duration_t nack_suppress_delay;
464  unsigned int min_buffer_size;
465  unsigned int max_buffer_size;
467  unsigned char send_initial_nack;
468  unsigned char send_msglen_submsg;
470  // constructor, copy constructor, assignment, destructor
471  void init() {}
472  void copy(const DiscoveryQosPolicy * from) { if (from) *this = *from; }
473  void clear() {}
475 
479  typedef struct COREDX_CPP_CLASS_API ThreadModelQosPolicy {
480  unsigned char use_threads;
481  unsigned char create_listener_thread;
483  // constructor, copy constructor, assignment, destructor
484  void init() {}
485  void copy(const ThreadModelQosPolicy * from) { if (from) *this = *from; }
486  void clear() {}
488 
489  // -------------------------------------------------------------
490  // Entity Quality of Service
491  // -------------------------------------------------------------
492 
499  class COREDX_CPP_CLASS_API DomainParticipantFactoryQos {
500  public:
504 
507  private:
509  DomainParticipantFactoryQos & operator=( const DomainParticipantFactoryQos & rhs );
510  };
511 
521  class COREDX_CPP_CLASS_API DomainParticipantQos {
522  public:
534  void clear();
535  private:
537  DomainParticipantQos & operator=( const DomainParticipantQos & rhs );
538  };
539 
549  class COREDX_CPP_CLASS_API TopicQos
550  {
551  public:
572  TopicQos();
573  ~TopicQos();
574  private:
575  TopicQos( const TopicQos & q );
576  TopicQos & operator=( const TopicQos & rhs );
577  };
578 
589  class COREDX_CPP_CLASS_API DataWriterQos
590  {
591  public:
618  DataWriterQos();
619  ~DataWriterQos();
620  DataWriterQos( const DataWriterQos & q );
621  DataWriterQos & operator=( const DataWriterQos & rhs );
622  };
623 
633  class COREDX_CPP_CLASS_API PublisherQos
634  {
635  public:
657  PublisherQos();
658  ~PublisherQos();
659  private:
660  PublisherQos( const PublisherQos & q );
661  PublisherQos & operator=( const PublisherQos & rhs );
662  };
663 
674  class COREDX_CPP_CLASS_API DataReaderQos
675  {
676  public:
705  DataReaderQos();
706  ~DataReaderQos();
707  DataReaderQos( const DataReaderQos & q );
708  DataReaderQos & operator=( const DataReaderQos & rhs );
709  };
710 
721  class COREDX_CPP_CLASS_API SubscriberQos
722  {
723  public:
745  SubscriberQos();
746  ~SubscriberQos();
747  private:
748  SubscriberQos( const SubscriberQos & q );
749  SubscriberQos & operator=( const SubscriberQos & rhs );
750  };
751 
752 
753  // -------------------------------------------------------------
754  // PRE-DEFINED VALUES
755  // Use namespace class DDS::xyz instead of these (namespace globals)
756  // -------------------------------------------------------------
757  const long LENGTH_UNLIMITED = DDS_LENGTH_UNLIMITED;
758  const long DURATION_INFINITE_SEC = DDS_DURATION_INFINITE_SEC;
759  const unsigned long DURATION_INFINITE_NSEC = DDS_DURATION_INFINITE_NSEC;
760  const long DURATION_ZERO_SEC = DDS_DURATION_ZERO_SEC;
761  const unsigned long DURATION_ZERO_NSEC = DDS_DURATION_ZERO_NSEC;
762  const long TIMESTAMP_INVALID_SEC = DDS_TIMESTAMP_INVALID_SEC;
763  const unsigned long TIMESTAMP_INVALID_NSEC = DDS_TIMESTAMP_INVALID_NSEC;
764 
765 #define TIMESTAMP_INVALID { DDS_TIMESTAMP_INVALID_SEC, DDS_TIMESTAMP_INVALID_NSEC }
766 
767  // InstanceHandle codes
768  const InstanceHandle_t HANDLE_NIL = DDS_HANDLE_NIL;
769  const InstanceHandle_t HANDLE_DEFAULT = DDS_HANDLE_DEFAULT;
770  const InstanceHandle_t HANDLE_NOT_ENABLED = DDS_HANDLE_NOT_ENABLED;
771 
772  // Return codes
773  const ReturnCode_t RETCODE_OK = DDS_RETCODE_OK;
774  const ReturnCode_t RETCODE_ERROR = DDS_RETCODE_ERROR;
775  const ReturnCode_t RETCODE_UNSUPPORTED = DDS_RETCODE_UNSUPPORTED;
776  const ReturnCode_t RETCODE_BAD_PARAMETER = DDS_RETCODE_BAD_PARAMETER;
777  const ReturnCode_t RETCODE_PRECONDITION_NOT_MET = DDS_RETCODE_PRECONDITION_NOT_MET;
778  const ReturnCode_t RETCODE_OUT_OF_RESOURCES = DDS_RETCODE_OUT_OF_RESOURCES;
779  const ReturnCode_t RETCODE_NOT_ENABLED = DDS_RETCODE_NOT_ENABLED;
780  const ReturnCode_t RETCODE_IMMUTABLE_POLICY = DDS_RETCODE_IMMUTABLE_POLICY;
781  const ReturnCode_t RETCODE_INCONSISTENT_POLICY = DDS_RETCODE_INCONSISTENT_POLICY;
782  const ReturnCode_t RETCODE_ALREADY_DELETED = DDS_RETCODE_ALREADY_DELETED;
783  const ReturnCode_t RETCODE_TIMEOUT = DDS_RETCODE_TIMEOUT;
784  const ReturnCode_t RETCODE_NO_DATA = DDS_RETCODE_NO_DATA;
785 
786  // Sample states
787  const unsigned long READ_SAMPLE_STATE = DDS_READ_SAMPLE_STATE;
788  const unsigned long NOT_READ_SAMPLE_STATE = DDS_NOT_READ_SAMPLE_STATE;
789  const unsigned long ANY_SAMPLE_STATE = DDS_ANY_SAMPLE_STATE;
790 
791  // View states
792  const unsigned long NEW_VIEW_STATE = DDS_NEW_VIEW_STATE;
793  const unsigned long NOT_NEW_VIEW_STATE = DDS_NOT_NEW_VIEW_STATE;
794  const unsigned long ANY_VIEW_STATE = DDS_ANY_VIEW_STATE;
795 
796  // Instance states
797  const unsigned long ALIVE_INSTANCE_STATE = DDS_ALIVE_INSTANCE_STATE;
798  const unsigned long NOT_ALIVE_DISPOSED_INSTANCE_STATE = DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE;
799  const unsigned long NOT_ALIVE_NO_WRITERS_INSTANCE_STATE= DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE;
800  const unsigned long NOT_ALIVE_INSTANCE_STATE = DDS_NOT_ALIVE_INSTANCE_STATE;
801  const unsigned long ANY_INSTANCE_STATE = DDS_ANY_INSTANCE_STATE;
802 
803  const StatusKind NO_STATUS = DDS_NO_STATUS;
804  const StatusKind STATUS_MASK_NONE = DDS_NO_STATUS;
805  const StatusKind INCONSISTENT_TOPIC_STATUS = DDS_INCONSISTENT_TOPIC_STATUS;
806  const StatusKind OFFERED_DEADLINE_MISSED_STATUS = DDS_OFFERED_DEADLINE_MISSED_STATUS;
807  const StatusKind REQUESTED_DEADLINE_MISSED_STATUS = DDS_REQUESTED_DEADLINE_MISSED_STATUS;
808  const StatusKind OFFERED_INCOMPATIBLE_QOS_STATUS = DDS_OFFERED_INCOMPATIBLE_QOS_STATUS;
809  const StatusKind REQUESTED_INCOMPATIBLE_QOS_STATUS = DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS;
810  const StatusKind SAMPLE_LOST_STATUS = DDS_SAMPLE_LOST_STATUS;
811  const StatusKind SAMPLE_REJECTED_STATUS = DDS_SAMPLE_REJECTED_STATUS;
812  const StatusKind DATA_ON_READERS_STATUS = DDS_DATA_ON_READERS_STATUS;
813  const StatusKind DATA_AVAILABLE_STATUS = DDS_DATA_AVAILABLE_STATUS;
814  const StatusKind LIVELINESS_LOST_STATUS = DDS_LIVELINESS_LOST_STATUS;
815  const StatusKind LIVELINESS_CHANGED_STATUS = DDS_LIVELINESS_CHANGED_STATUS;
816  const StatusKind PUBLICATION_MATCHED_STATUS = DDS_PUBLICATION_MATCHED_STATUS;
817  const StatusKind SUBSCRIPTION_MATCHED_STATUS = DDS_SUBSCRIPTION_MATCHED_STATUS;
818  const StatusKind ALL_STATUS = DDS_ALL_STATUS;
819 
820  const QosPolicyId_t USERDATA_QOS_POLICY_ID = DDS_USERDATA_QOS_POLICY_ID;
821  const QosPolicyId_t DURABILITY_QOS_POLICY_ID = DDS_DURABILITY_QOS_POLICY_ID;
822  const QosPolicyId_t PRESENTATION_QOS_POLICY_ID = DDS_PRESENTATION_QOS_POLICY_ID;
823  const QosPolicyId_t DEADLINE_QOS_POLICY_ID = DDS_DEADLINE_QOS_POLICY_ID;
824  const QosPolicyId_t LATENCYBUDGET_QOS_POLICY_ID = DDS_LATENCYBUDGET_QOS_POLICY_ID;
825  const QosPolicyId_t OWNERSHIP_QOS_POLICY_ID = DDS_OWNERSHIP_QOS_POLICY_ID;
826  const QosPolicyId_t OWNERSHIPSTRENGTH_QOS_POLICY_ID = DDS_OWNERSHIPSTRENGTH_QOS_POLICY_ID;
827  const QosPolicyId_t LIVELINESS_QOS_POLICY_ID = DDS_LIVELINESS_QOS_POLICY_ID;
828  const QosPolicyId_t TIMEBASEDFILTER_QOS_POLICY_ID = DDS_TIMEBASEDFILTER_QOS_POLICY_ID;
829  const QosPolicyId_t PARTITION_QOS_POLICY_ID = DDS_PARTITION_QOS_POLICY_ID;
830  const QosPolicyId_t RELIABILITY_QOS_POLICY_ID = DDS_RELIABILITY_QOS_POLICY_ID;
831  const QosPolicyId_t DESTINATIONORDER_QOS_POLICY_ID = DDS_DESTINATIONORDER_QOS_POLICY_ID;
832  const QosPolicyId_t HISTORY_QOS_POLICY_ID = DDS_HISTORY_QOS_POLICY_ID;
833  const QosPolicyId_t RESOURCELIMITS_QOS_POLICY_ID = DDS_RESOURCELIMITS_QOS_POLICY_ID;
834  const QosPolicyId_t ENTITYFACTORY_QOS_POLICY_ID = DDS_ENTITYFACTORY_QOS_POLICY_ID;
835  const QosPolicyId_t WRITERDATALIFECYCLE_QOS_POLICY_ID = DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID;
836  const QosPolicyId_t READERDATALIFECYCLE_QOS_POLICY_ID = DDS_READERDATALIFECYCLE_QOS_POLICY_ID;
837  const QosPolicyId_t TOPICDATA_QOS_POLICY_ID = DDS_TOPICDATA_QOS_POLICY_ID;
838  const QosPolicyId_t GROUPDATA_QOS_POLICY_ID = DDS_GROUPDATA_QOS_POLICY_ID;
839  const QosPolicyId_t TRANSPORTPRIORITY_QOS_POLICY_ID = DDS_TRANSPORTPRIORITY_QOS_POLICY_ID;
840  const QosPolicyId_t LIFESPAN_QOS_POLICY_ID = DDS_LIFESPAN_QOS_POLICY_ID;
841  const QosPolicyId_t DURABILITYSERVICE_QOS_POLICY_ID = DDS_DURABILITYSERVICE_QOS_POLICY_ID;
842  const QosPolicyId_t DATA_REPRESENTATION_QOS_POLICY_ID = DDS_DATA_REPRESENTATION_QOS_POLICY_ID;
843 
844  COREDX_CPP_CONST char * USERDATA_QOS_POLICY_NAME ;
845  COREDX_CPP_CONST char * DURABILITY_QOS_POLICY_NAME ;
846  COREDX_CPP_CONST char * PRESENTATION_QOS_POLICY_NAME ;
847  COREDX_CPP_CONST char * DEADLINE_QOS_POLICY_NAME ;
848  COREDX_CPP_CONST char * LATENCYBUDGET_QOS_POLICY_NAME ;
849  COREDX_CPP_CONST char * OWNERSHIP_QOS_POLICY_NAME ;
850  COREDX_CPP_CONST char * OWNERSHIPSTRENGTH_QOS_POLICY_NAME ;
851  COREDX_CPP_CONST char * LIVELINESS_QOS_POLICY_NAME ;
852  COREDX_CPP_CONST char * TIMEBASEDFILTER_QOS_POLICY_NAME ;
853  COREDX_CPP_CONST char * PARTITION_QOS_POLICY_NAME ;
854  COREDX_CPP_CONST char * RELIABILITY_QOS_POLICY_NAME ;
855  COREDX_CPP_CONST char * DESTINATIONORDER_QOS_POLICY_NAME ;
856  COREDX_CPP_CONST char * HISTORY_QOS_POLICY_NAME ;
857  COREDX_CPP_CONST char * RESOURCELIMITS_QOS_POLICY_NAME ;
858  COREDX_CPP_CONST char * ENTITYFACTORY_QOS_POLICY_NAME ;
859  COREDX_CPP_CONST char * WRITERDATALIFECYCLE_QOS_POLICY_NAME ;
860  COREDX_CPP_CONST char * READERDATALIFECYCLE_QOS_POLICY_NAME ;
861  COREDX_CPP_CONST char * TOPICDATA_QOS_POLICY_NAME ;
862  COREDX_CPP_CONST char * GROUPDATA_QOS_POLICY_NAME ;
863  COREDX_CPP_CONST char * TRANSPORTPRIORITY_QOS_POLICY_NAME ;
864  COREDX_CPP_CONST char * LIFESPAN_QOS_POLICY_NAME ;
865  COREDX_CPP_CONST char * DURABILITYSERVICE_POLICY_NAME ;
866  COREDX_CPP_CONST char * DATA_REPRESENTATION_POLICY_NAME ;
867 
868  COREDX_CPP_CONST DomainParticipantQos PARTICIPANT_QOS_DEFAULT ;
869  COREDX_CPP_CONST TopicQos TOPIC_QOS_DEFAULT ;
870  COREDX_CPP_CONST PublisherQos PUBLISHER_QOS_DEFAULT ;
871  COREDX_CPP_CONST SubscriberQos SUBSCRIBER_QOS_DEFAULT ;
872  COREDX_CPP_CONST DataWriterQos DATAWRITER_QOS_DEFAULT ;
873  COREDX_CPP_CONST DataReaderQos DATAREADER_QOS_DEFAULT ;
874  COREDX_CPP_CONST DataWriterQos DATAWRITER_QOS_USE_TOPIC_QOS;
875  COREDX_CPP_CONST DataReaderQos DATAREADER_QOS_USE_TOPIC_QOS;
876 
877  // -------------------------------------------------------------
878  // ENTITY
879  // -------------------------------------------------------------
884  class COREDX_CPP_CLASS_API Entity
885  {
886  public:
894  virtual StatusCondition * get_statuscondition();
895 
899  virtual StatusMask get_status_changes()=0;
906  virtual ReturnCode_t enable();
910  virtual InstanceHandle_t get_instance_handle();
911 
912  protected:
913  Entity( );
914  virtual ~Entity();
915  void init(struct _Entity * e);
916  struct _Entity * _entity;
917  class StatusCondition * _sc;
918  }; // class Entity
919 
920 
921  // -------------------------------------------------------------
922  // DOMAIN ENTITY
923  // -------------------------------------------------------------
928  class COREDX_CPP_CLASS_API DomainEntity : public Entity
929  {
930  public:
931  DomainEntity( struct _Entity * e );
932  virtual ~DomainEntity() {};
933  };
934 
941  class COREDX_CPP_CLASS_API DomainParticipantFactory
942  {
943 
944  public:
948  static DomainParticipantFactory * get_instance();
949  static void destroy(); // delete the single DomainParticipantFactory instance
950 
951 
963  DomainParticipant * create_participant( DomainId_t domain_id,
964  const DomainParticipantQos & qos,
965  DomainParticipantListener * a_listener,
966  StatusMask mask);
973  ReturnCode_t delete_participant ( DomainParticipant * a_participant );
979  DomainParticipant * lookup_participant ( DomainId_t domain_id );
987  ReturnCode_t set_default_participant_qos ( const DomainParticipantQos & qos );
992  ReturnCode_t get_default_participant_qos ( DomainParticipantQos & qos);
993  ReturnCode_t get_default_participant_qos ( DomainParticipantQos * qos);
1000  ReturnCode_t set_qos ( const DomainParticipantFactoryQos & qos );
1005  ReturnCode_t get_qos ( DomainParticipantFactoryQos & qos );
1006 
1007 
1008  private:
1009  DomainParticipantFactory() ; // constructor
1010  ~DomainParticipantFactory(); // destructor
1011 
1012  static void check_cpp_assumptions();
1013  };
1014 
1015 
1016  extern "C" void dp_offered_deadline_missed_wrapper( struct _DataWriter * the_c_writer,
1017  OfferedDeadlineMissedStatus status);
1018  extern "C" void dp_offered_incompatible_qos_wrapper( struct _DataWriter * the_c_writer,
1019  OfferedIncompatibleQosStatus status );
1020  extern "C" void dp_liveliness_lost_wrapper( struct _DataWriter * the_c_writer,
1021  LivelinessLostStatus status );
1022  extern "C" void dp_publication_matched_wrapper( struct _DataWriter * the_c_writer,
1023  PublicationMatchedStatus status );
1024  extern "C" void dp_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1025  extern "C" void dp_data_available_wrapper ( struct _DataReader * the_reader );
1026  extern "C" void dp_sample_rejected_wrapper ( struct _DataReader * the_reader,
1027  SampleRejectedStatus status );
1028  extern "C" void dp_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1029  LivelinessChangedStatus status );
1030  extern "C" void dp_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1031  RequestedDeadlineMissedStatus status );
1032  extern "C" void dp_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1033  RequestedIncompatibleQosStatus status );
1034  extern "C" void dp_subscription_matched_wrapper( struct _DataReader * the_reader,
1035  SubscriptionMatchedStatus status );
1036  extern "C" void dp_sample_lost_wrapper ( struct _DataReader * the_reader,
1037  SampleLostStatus status );
1038  extern "C" void dp_inconsistent_topic_wrapper( struct _Topic * the_topic,
1039  InconsistentTopicStatus status );
1040 
1041  // -------------------------------------------------------------
1042  // DOMAIN PARTICIPANT
1043  // -------------------------------------------------------------
1052  class COREDX_CPP_CLASS_API DomainParticipant : public Entity
1053  {
1054  friend class DomainParticipantFactory;
1055  public:
1056 
1061  ReturnCode_t get_qos( DomainParticipantQos & qos);
1066  ReturnCode_t set_qos( const DomainParticipantQos & qos);
1067 
1076  StatusMask get_status_changes();
1085  ReturnCode_t set_listener( DomainParticipantListener * a_listener,
1086  StatusMask mask);
1096  DomainParticipantListener * get_listener( );
1104  class Publisher * create_publisher ( const PublisherQos & qos,
1105  PublisherListener * a_listener,
1106  StatusMask mask);
1114  ReturnCode_t delete_publisher ( class Publisher * p);
1122  class Subscriber * create_subscriber( const SubscriberQos & qos,
1123  SubscriberListener * a_listener,
1124  StatusMask mask);
1132  ReturnCode_t delete_subscriber( class Subscriber * s);
1144  class Topic * create_topic( const char * topic_name,
1145  const char * type_name,
1146  const TopicQos & qos,
1147  TopicListener * a_listener,
1148  StatusMask mask);
1157  ReturnCode_t delete_topic( class Topic * a_topic);
1170  class Topic * find_topic ( const char * topic_name,
1171  const Duration_t & timeout);
1172  class Topic * find_topic ( const char * topic_name,
1173  const DDS_Duration_t & timeout);
1179  class TopicDescription * lookup_topicdescription( const char * name );
1190  class Subscriber * get_builtin_subscriber();
1199  ReturnCode_t ignore_participant ( InstanceHandle_t &handle);
1208  ReturnCode_t ignore_topic ( InstanceHandle_t &handle);
1216  ReturnCode_t ignore_publication ( InstanceHandle_t &handle);
1224  ReturnCode_t ignore_subscription ( InstanceHandle_t &handle);
1229  DomainId_t get_domain_id( );
1239  ReturnCode_t delete_contained_entities( );
1251  ReturnCode_t assert_liveliness( );
1259  ReturnCode_t set_default_publisher_qos( const PublisherQos & qos);
1264  ReturnCode_t get_default_publisher_qos( PublisherQos & qos);
1265  ReturnCode_t get_default_publisher_qos( PublisherQos * qos);
1273  ReturnCode_t set_default_subscriber_qos( const SubscriberQos & qos);
1278  ReturnCode_t get_default_subscriber_qos( SubscriberQos & qos);
1279  ReturnCode_t get_default_subscriber_qos( SubscriberQos * qos);
1287  ReturnCode_t set_default_topic_qos( const TopicQos & qos);
1292  ReturnCode_t get_default_topic_qos( TopicQos & qos);
1293  ReturnCode_t get_default_topic_qos( TopicQos * qos);
1301  ReturnCode_t get_discovered_participants( InstanceHandleSeq * participant_handles );
1308  ReturnCode_t get_discovered_participant_data( ParticipantBuiltinTopicData * participant_data,
1309  InstanceHandle_t & participant_handle );
1317  ReturnCode_t get_discovered_topics( InstanceHandleSeq * topic_handles);
1349  class ContentFilteredTopic *create_contentfilteredtopic( const char * name,
1350  class Topic * related_topic,
1351  const char * filter_expression,
1352  const StringSeq & filter_parameters);
1362  ReturnCode_t delete_contentfilteredtopic( class ContentFilteredTopic * a_cft);
1368  class MultiTopic * create_multitopic( const char * name,
1369  const char * type_name,
1370  const char * subscription_expression,
1371  const StringSeq & expression_params);
1377  ReturnCode_t delete_multitopic( class MultiTopic * a_multitopic);
1384  ReturnCode_t get_discovered_topic_data( TopicBuiltinTopicData * topic_data,
1385  InstanceHandle_t & topic_handle );
1386 
1393  bool contains_entity( InstanceHandle_t a_handle);
1397  ReturnCode_t get_current_time( Time_t * current_time);
1398  ReturnCode_t get_current_time( Time_t & current_time);
1399 
1411  ReturnCode_t do_work( const Duration_t & time_slice );
1412 
1416  ReturnCode_t builtin_wait_for_acknowledgments( const Duration_t & max_wait );
1420  ReturnCode_t get_guid(GUID_t * guid);
1421 
1422  ReturnCode_t add_transport(struct CoreDX_Transport * transport);
1423 
1424  DDS_DomainParticipant get_core_participant();
1425 
1426 
1427  //----
1428  // Inherited from class Entity
1429 
1445  ReturnCode_t enable( );
1450  InstanceHandle_t get_instance_handle( );
1451 
1452  protected:
1453  struct DP_impl * _impl;
1454 
1455  // Create / Destory via DomainParticipantFactory
1457  ~DomainParticipant();
1458 
1459  void init();
1460  // Listener Wrapper Methods
1461  static void initialize_listener( DDS_DomainParticipantListener * core_listener,
1462  StatusMask nil_listener );
1463 
1464  friend void dp_offered_deadline_missed_wrapper( struct _DataWriter * the_c_writer,
1465  OfferedDeadlineMissedStatus status);
1466  friend void dp_offered_incompatible_qos_wrapper( struct _DataWriter * the_c_writer,
1467  OfferedIncompatibleQosStatus status );
1468  friend void dp_liveliness_lost_wrapper( struct _DataWriter * the_c_writer,
1469  LivelinessLostStatus status );
1470  friend void dp_publication_matched_wrapper( struct _DataWriter * the_c_writer,
1471  PublicationMatchedStatus status );
1472  friend void dp_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1473  friend void dp_data_available_wrapper ( struct _DataReader * the_reader );
1474  friend void dp_sample_rejected_wrapper ( struct _DataReader * the_reader,
1475  SampleRejectedStatus status );
1476  friend void dp_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1477  LivelinessChangedStatus status );
1478  friend void dp_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1479  RequestedDeadlineMissedStatus status );
1480  friend void dp_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1481  RequestedIncompatibleQosStatus status );
1482  friend void dp_subscription_matched_wrapper( struct _DataReader * the_reader,
1483  SubscriptionMatchedStatus status );
1484  friend void dp_sample_lost_wrapper ( struct _DataReader * the_reader,
1485  SampleLostStatus status );
1486  friend void dp_inconsistent_topic_wrapper( struct _Topic * the_topic,
1487  InconsistentTopicStatus status );
1488 
1489  public:
1497  ReturnCode_t register_type( TypeSupport * ts, const char * type_name );
1507  int check_version( const char * major, const char * minor, const char * patch);
1508  int validate_version( const char * tname, const char * major, const char * minor, const char * patch);
1509  TypeSupport * get_type( const char * type_name );
1513  void print_stats( );
1514 
1515  }; // class DomainParticipant
1516 
1517 
1518  extern "C" void pub_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
1519  OfferedDeadlineMissedStatus status);
1520  extern "C" void pub_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
1521  OfferedIncompatibleQosStatus status );
1522  extern "C" void pub_liveliness_lost_wrapper( _DataWriter * the_c_writer,
1523  LivelinessLostStatus status );
1524  extern "C" void pub_publication_matched_wrapper( _DataWriter * the_c_writer,
1525  PublicationMatchedStatus status );
1526 
1527  // -------------------------------------------------------------
1528  // PUBLISHER
1529  // -------------------------------------------------------------
1534  class COREDX_CPP_CLASS_API Publisher : public Entity
1535  {
1536  friend class DomainParticipant;
1537  public:
1553  ReturnCode_t enable( );
1558  InstanceHandle_t get_instance_handle( );
1567  StatusMask get_status_changes();
1568 
1573  class DomainParticipant * get_participant( );
1587  class DataWriter * create_datawriter( Topic * a_topic,
1588  const DataWriterQos & qos,
1589  DataWriterListener * a_listener,
1590  StatusMask mask);
1596  ReturnCode_t delete_datawriter( DataWriter * a_datawriter);
1603  class DataWriter * lookup_datawriter( const char * topic_name);
1613  ReturnCode_t delete_contained_entities( );
1618  ReturnCode_t set_qos( const PublisherQos & qos);
1632  ReturnCode_t get_qos( PublisherQos & qos);
1641  ReturnCode_t set_listener( PublisherListener * a_listener,
1642  StatusMask mask);
1652  class PublisherListener * get_listener( );
1656  ReturnCode_t suspend_publications( );
1660  ReturnCode_t resume_publications( );
1664  ReturnCode_t begin_coherent_changes( );
1668  ReturnCode_t end_coherent_changes( );
1677  ReturnCode_t wait_for_acknowledgments(const Duration_t & max_wait);
1678 
1687  ReturnCode_t set_default_datawriter_qos( const DataWriterQos & qos);
1692  ReturnCode_t get_default_datawriter_qos( DataWriterQos & qos);
1693  ReturnCode_t get_default_datawriter_qos( DataWriterQos * qos);
1700  ReturnCode_t copy_from_topic_qos( DataWriterQos & a_datawriter_qos,
1701  const TopicQos & a_topic_qos);
1702  protected:
1703  // Create / Destory via DomainParticipant
1704  Publisher();
1705  ~Publisher();
1706 
1707  // Listener Wrapper Methods
1708  static void initialize_listener( DDS_PublisherListener * core_listener,
1709  StatusMask nil_listeners );
1710  friend void pub_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
1711  OfferedDeadlineMissedStatus status);
1712  friend void pub_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
1713  OfferedIncompatibleQosStatus status );
1714  friend void pub_liveliness_lost_wrapper( _DataWriter * the_c_writer,
1715  LivelinessLostStatus status );
1716  friend void pub_publication_matched_wrapper( _DataWriter * the_c_writer,
1717  PublicationMatchedStatus status );
1718 
1719  struct PUB_impl * _impl;
1720  }; // class Publisher
1721 
1722  extern "C" void sub_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1723  extern "C" void sub_data_available_wrapper ( struct _DataReader * the_reader );
1724  extern "C" void sub_sample_rejected_wrapper ( struct _DataReader * the_reader,
1725  SampleRejectedStatus status );
1726  extern "C" void sub_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1727  LivelinessChangedStatus status );
1728  extern "C" void sub_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1729  RequestedDeadlineMissedStatus status );
1730  extern "C" void sub_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1731  RequestedIncompatibleQosStatus status );
1732  extern "C" void sub_subscription_matched_wrapper( struct _DataReader * the_reader,
1733  SubscriptionMatchedStatus status );
1734  extern "C" void sub_sample_lost_wrapper ( struct _DataReader * the_reader,
1735  SampleLostStatus status );
1736  // -------------------------------------------------------------
1737  // SUBSCRIBER
1738  // -------------------------------------------------------------
1743  class COREDX_CPP_CLASS_API Subscriber : public Entity
1744  {
1745  friend class DomainParticipant;
1746  public:
1762  ReturnCode_t enable( );
1767  InstanceHandle_t get_instance_handle( );
1776  StatusMask get_status_changes();
1790  DataReader * create_datareader( TopicDescription * a_topic,
1791  const DataReaderQos & qos,
1792  DataReaderListener* a_listener,
1793  StatusMask mask);
1803  ReturnCode_t delete_datareader( class DataReader * a_datareader);
1814  ReturnCode_t delete_contained_entities( );
1822  DataReader * lookup_datareader( const char * topic_name);
1839  ReturnCode_t get_datareaders( DataReaderSeq * readers,
1840  SampleStateMask sample_states,
1841  ViewStateMask view_states,
1842  InstanceStateMask instance_states) ;
1847  DomainParticipant * get_participant();
1852  ReturnCode_t set_qos( const SubscriberQos & qos);
1865  ReturnCode_t get_qos( SubscriberQos & qos);
1874  ReturnCode_t set_listener( SubscriberListener * a_listener,
1875  StatusMask mask);
1885  SubscriberListener * get_listener( );
1893  ReturnCode_t begin_access( );
1898  ReturnCode_t end_access( );
1907  ReturnCode_t set_default_datareader_qos( const DataReaderQos & qos);
1912  ReturnCode_t get_default_datareader_qos( DataReaderQos & qos);
1913  ReturnCode_t get_default_datareader_qos( DataReaderQos * qos);
1920  ReturnCode_t copy_from_topic_qos( DataReaderQos & a_datareader_qos,
1921  const TopicQos & a_topic_qos);
1922 
1923  protected:
1924  // Create / Destroy via DomainParticipant
1925  Subscriber( );
1926  ~Subscriber();
1927 
1928  static void initialize_listener( DDS_SubscriberListener * core_listener,
1929  StatusMask nil_listeners );
1930  friend void sub_data_on_readers_wrapper ( struct _Subscriber * the_subscriber );
1931  friend void sub_data_available_wrapper ( struct _DataReader * the_reader );
1932  friend void sub_sample_rejected_wrapper ( struct _DataReader * the_reader,
1933  SampleRejectedStatus status );
1934  friend void sub_liveliness_changed_wrapper ( struct _DataReader * the_reader,
1935  LivelinessChangedStatus status );
1936  friend void sub_requested_deadline_missed_wrapper( struct _DataReader * the_reader,
1937  RequestedDeadlineMissedStatus status );
1938  friend void sub_requested_incompatible_qos_wrapper( struct _DataReader * the_reader,
1939  RequestedIncompatibleQosStatus status );
1940  friend void sub_subscription_matched_wrapper( struct _DataReader * the_reader,
1941  SubscriptionMatchedStatus status );
1942  friend void sub_sample_lost_wrapper ( struct _DataReader * the_reader,
1943  SampleLostStatus status );
1944 
1945  struct SUB_impl * _impl;
1946  }; // class Subscriber
1947 
1948  // -------------------------------------------------------------
1949  // TOPIC DESCRIPTION
1950  // -------------------------------------------------------------
1956  class COREDX_CPP_CLASS_API TopicDescription
1957  {
1958  friend class Subscriber;
1959  friend class DomainParticipant;
1960  public:
1961  TopicDescription();
1962  virtual ~TopicDescription();
1963 
1967  virtual DomainParticipant * get_participant( );
1972  virtual const char * get_type_name ( );
1977  virtual const char * get_name ( );
1978  private:
1979  struct _TopicDescription * _td;
1980  };
1981 
1982  extern "C" void top_inconsistent_topic_wrapper( struct _Topic * topic,
1983  InconsistentTopicStatus status );
1984  // -------------------------------------------------------------
1985  // TOPIC
1986  // -------------------------------------------------------------
1997  class COREDX_CPP_CLASS_API Topic : public TopicDescription,
1998  public Entity
1999  {
2000  friend class DomainParticipant;
2001  friend class Publisher;
2002  public:
2006  const char * get_type_name ( );
2010  const char * get_name ( );
2014  DomainParticipant * get_participant( );
2020  StatusMask get_status_changes();
2035  ReturnCode_t enable( );
2040  ReturnCode_t set_qos( const TopicQos & qos);
2052  ReturnCode_t get_qos( TopicQos & qos);
2061  ReturnCode_t set_listener( TopicListener * a_listener,
2062  StatusMask mask);
2072  TopicListener * get_listener( );
2077  ReturnCode_t get_inconsistent_topic_status( InconsistentTopicStatus * a_status);
2078  protected:
2079  Topic( );
2080  virtual ~Topic();
2081 
2082  static void initialize_listener( DDS_TopicListener * core_listener,
2083  StatusMask nil_listeners );
2084  friend void top_inconsistent_topic_wrapper( struct _Topic * topic,
2085  InconsistentTopicStatus status );
2086  struct _Topic * _topic;
2087  TopicListener * _listener;
2088  };
2089 
2090  // -------------------------------------------------------------
2091  // CONTENT FILTERED TOPIC
2092  // -------------------------------------------------------------
2125  class COREDX_CPP_CLASS_API ContentFilteredTopic : public TopicDescription
2126  {
2127  friend class DomainParticipant;
2128  friend class Publisher;
2129  public:
2130  const char * get_type_name ( );
2131  const char * get_name ( );
2136  Topic * get_related_topic( );
2141  ReturnCode_t get_expression_parameters( StringSeq & params);
2152  ReturnCode_t set_expression_parameters( const StringSeq & params);
2153  protected:
2155  virtual ~ContentFilteredTopic();
2156 
2157  struct _ContentFilteredTopic * _cf_topic;
2158  Topic * _related_topic;
2159  };
2160 
2161  extern "C" void dw_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
2162  OfferedDeadlineMissedStatus status);
2163  extern "C" void dw_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
2164  OfferedIncompatibleQosStatus status );
2165  extern "C" void dw_liveliness_lost_wrapper( _DataWriter * the_c_writer,
2166  LivelinessLostStatus status );
2167  extern "C" void dw_publication_matched_wrapper( _DataWriter * the_c_writer,
2168  PublicationMatchedStatus status );
2169  // -------------------------------------------------------------
2170  // DATA WRITER
2171  // -------------------------------------------------------------
2179  class COREDX_CPP_CLASS_API DataWriter : public Entity
2180  {
2181  friend class Publisher;
2182  friend class DomainParticipant;
2183  public:
2197  ReturnCode_t enable( );
2202  InstanceHandle_t get_instance_handle( );
2208  StatusMask get_status_changes();
2213  ReturnCode_t set_qos(const DataWriterQos & qos);
2225  ReturnCode_t get_qos(DataWriterQos & qos);
2234  ReturnCode_t set_listener(DataWriterListener * a_listener,
2235  StatusMask mask);
2245  DataWriterListener * get_listener();
2250  class Topic * get_topic();
2255  class Publisher * get_publisher();
2264  ReturnCode_t wait_for_acknowledgments(const Duration_t & max_wait);
2274  ReturnCode_t assert_liveliness();
2280  InstanceHandle_t register_instance(const void * instance_data);
2286  InstanceHandle_t register_instance_w_timestamp(const void * instance_data,
2287  const Time_t & source_timestamp);
2294  ReturnCode_t unregister_instance( const void * instance_data,
2295  const InstanceHandle_t handle);
2302  ReturnCode_t unregister_instance_w_timestamp( const void * instance_data,
2303  const InstanceHandle_t handle,
2304  const Time_t & source_timestamp);
2317  ReturnCode_t write( const void * instance_data,
2318  const InstanceHandle_t handle);
2331  ReturnCode_t write_w_timestamp(const void * instance_data,
2332  const InstanceHandle_t handle,
2333  const Time_t & source_timestamp);
2340  ReturnCode_t dispose(const void * instance_data,
2341  const InstanceHandle_t instance_handle);
2348  ReturnCode_t dispose_w_timestamp( const void * instance_data,
2349  const InstanceHandle_t instance_handle,
2350  const Time_t & source_timestamp);
2358  ReturnCode_t get_key_value( void * key_holder,
2359  const InstanceHandle_t handle);
2364  InstanceHandle_t lookup_instance( const void * instance_data);
2365 
2370  ReturnCode_t write_request( const void * instance_data,
2371  const InstanceHandle_t h,
2372  DDS::SampleIdentity_t * req_id );
2377  ReturnCode_t write_reply( const void * instance_data,
2378  const InstanceHandle_t h,
2379  DDS::SampleIdentity_t * rep_id);
2380 
2381 
2382  // Access the status
2387  ReturnCode_t get_liveliness_lost_status ( LivelinessLostStatus *status );
2392  ReturnCode_t get_offered_deadline_missed_status ( OfferedDeadlineMissedStatus *status );
2397  ReturnCode_t get_offered_incompatible_qos_status( OfferedIncompatibleQosStatus *status );
2402  ReturnCode_t get_publication_matched_status ( PublicationMatchedStatus *status );
2410  ReturnCode_t get_matched_subscriptions( InstanceHandleSeq * subscription_handles);
2417  ReturnCode_t get_matched_subscription_data( SubscriptionBuiltinTopicData * subscription_data,
2418  InstanceHandle_t & subscription_handle);
2419 
2420  ReturnCode_t get_cache_stats( CacheStatistics & stats );
2424  ReturnCode_t get_guid(GUID_t * guid);
2425 
2426  virtual DataWriter * narrow() = 0;
2427  protected:
2428  // Create / Destroy via Publisher
2429  DataWriter( );
2430  virtual ~DataWriter();
2431 
2432  static void initialize_listener( DDS_DataWriterListener * core_listener,
2433  StatusMask nil_listener );
2434  friend void dw_offered_deadline_missed_wrapper( _DataWriter * the_c_writer,
2435  OfferedDeadlineMissedStatus status);
2436  friend void dw_offered_incompatible_qos_wrapper( _DataWriter * the_c_writer,
2437  OfferedIncompatibleQosStatus status );
2438  friend void dw_liveliness_lost_wrapper( _DataWriter * the_c_writer,
2439  LivelinessLostStatus status );
2440  friend void dw_publication_matched_wrapper( _DataWriter * the_c_writer,
2441  PublicationMatchedStatus status );
2442 
2443  struct DW_impl * _impl;
2444  }; // class DataWrtier
2445 
2446 
2447  extern "C" void dr_requested_deadline_missed_wrapper( _DataReader * dr, RequestedDeadlineMissedStatus status );
2448  extern "C" void dr_requested_incompatible_qos_wrapper( _DataReader * dr, RequestedIncompatibleQosStatus status );
2449  extern "C" void dr_sample_rejected_wrapper( _DataReader * dr, SampleRejectedStatus status );
2450  extern "C" void dr_liveliness_changed_wrapper( _DataReader * dr, LivelinessChangedStatus status );
2451  extern "C" void dr_data_available_wrapper( _DataReader * dr );
2452  extern "C" void dr_subscription_matched_wrapper( _DataReader * dr, SubscriptionMatchedStatus status );
2453  extern "C" void dr_sample_lost_wrapper( _DataReader * dr, SampleLostStatus status );
2454 
2455  // -------------------------------------------------------------
2456  // DATA READER
2457  // -------------------------------------------------------------
2466  class COREDX_CPP_CLASS_API DataReader : public Entity
2467  {
2468  friend class Subscriber;
2469  friend class DomainParticipant;
2470  friend class coredx::rpc::Requester;
2471 
2472  public:
2477  InstanceHandle_t get_instance_handle( );
2483  StatusMask get_status_changes ( );
2497  ReturnCode_t enable ( );
2498  StatusCondition * get_statuscondition( );
2499 
2506  ReadCondition * create_readcondition( SampleStateMask sample_states,
2507  ViewStateMask view_states,
2508  InstanceStateMask instance_states);
2519  ReturnCode_t delete_readcondition( ReadCondition * a_condition);
2528  ReturnCode_t delete_contained_entities( );
2533  ReturnCode_t set_qos( const DataReaderQos & qos);
2545  ReturnCode_t get_qos( DataReaderQos & qos);
2554  ReturnCode_t set_listener( DataReaderListener * a_listener,
2555  StatusMask mask);
2565  DataReaderListener * get_listener();
2571  TopicDescription * get_topicdescription( );
2576  Subscriber * get_subscriber( );
2581  ReturnCode_t get_sample_rejected_status ( SampleRejectedStatus * status);
2586  ReturnCode_t get_liveliness_changed_status( LivelinessChangedStatus * status);
2591  ReturnCode_t get_requested_deadline_missed_status ( RequestedDeadlineMissedStatus * status);
2596  ReturnCode_t get_requested_incompatible_qos_status( RequestedIncompatibleQosStatus * status);
2601  ReturnCode_t get_subscription_matched_status ( SubscriptionMatchedStatus * status);
2606  ReturnCode_t get_sample_lost_status ( SampleLostStatus * status);
2611  ReturnCode_t wait_for_historical_data( const Duration_t & max_wait);
2619  ReturnCode_t get_matched_publications( InstanceHandleSeq * publication_handles);
2626  ReturnCode_t get_matched_publication_data( PublicationBuiltinTopicData * publication_data,
2627  const InstanceHandle_t publication_handle);
2660  QueryCondition * create_querycondition( SampleStateMask sample_states,
2661  ViewStateMask view_states,
2662  InstanceStateMask instance_states,
2663  const char * query_expression,
2664  const StringSeq & query_parameters);
2665 
2666  // BASE read/take operations
2707  ReturnCode_t read( Sequence * received_data,
2708  SampleInfoSeq * sample_infos,
2709  long max_samples,
2710  SampleStateMask sample_states,
2711  ViewStateMask view_states,
2712  InstanceStateMask instance_states);
2753  ReturnCode_t take( Sequence * received_data,
2754  SampleInfoSeq * sample_infos,
2755  long max_samples,
2756  SampleStateMask sample_states,
2757  ViewStateMask view_states,
2758  InstanceStateMask instance_states);
2767  ReturnCode_t read_w_condition( Sequence * received_data,
2768  SampleInfoSeq * sample_infos,
2769  long max_samples,
2770  ReadCondition * a_condition);
2779  ReturnCode_t take_w_condition( Sequence * received_data,
2780  SampleInfoSeq * sample_infos,
2781  long max_samples,
2782  ReadCondition * a_condition);
2790  ReturnCode_t read_next_sample( void * received_data,
2791  SampleInfo * sample_info);
2799  ReturnCode_t take_next_sample( void * received_data,
2800  SampleInfo * sample_info);
2809  ReturnCode_t read_instance(Sequence * received_data,
2810  SampleInfoSeq * sample_infos,
2811  long max_samples,
2812  InstanceHandle_t a_handle,
2813  SampleStateMask sample_states,
2814  ViewStateMask view_states,
2815  InstanceStateMask instance_states);
2824  ReturnCode_t take_instance(Sequence * received_data,
2825  SampleInfoSeq * sample_infos,
2826  long max_samples,
2827  InstanceHandle_t a_handle,
2828  SampleStateMask sample_states,
2829  ViewStateMask view_states,
2830  InstanceStateMask instance_states);
2839  ReturnCode_t read_next_instance( Sequence * received_data,
2840  SampleInfoSeq * sample_infos,
2841  long max_samples,
2842  InstanceHandle_t previous_handle,
2843  SampleStateMask sample_states,
2844  ViewStateMask view_states,
2845  InstanceStateMask instance_states);
2854  ReturnCode_t take_next_instance( Sequence * received_data,
2855  SampleInfoSeq * sample_infos,
2856  long max_samples,
2857  InstanceHandle_t previous_handle,
2858  SampleStateMask sample_states,
2859  ViewStateMask view_states,
2860  InstanceStateMask instance_states);
2869  ReturnCode_t read_next_instance_w_condition( Sequence * received_data,
2870  SampleInfoSeq * sample_infos,
2871  long max_samples,
2872  InstanceHandle_t previous_handle,
2873  ReadCondition * a_condition);
2882  ReturnCode_t take_next_instance_w_condition( Sequence * received_data,
2883  SampleInfoSeq * sample_infos,
2884  long max_samples,
2885  InstanceHandle_t previous_handle,
2886  ReadCondition * a_condition);
2901  ReturnCode_t return_loan( Sequence * received_data,
2902  SampleInfoSeq * sample_infos);
2910  ReturnCode_t get_key_value( void * key_holder,
2911  InstanceHandle_t handle);
2918  InstanceHandle_t lookup_instance( void * instance_data);
2922  ReturnCode_t get_guid(GUID_t * guid);
2923  virtual DataReader * narrow() = 0;
2924  ReturnCode_t get_cache_stats( CacheStatistics & stats );
2925  ReturnCode_t print_cache( );
2926 
2927  protected:
2928  DataReader( );
2929  virtual ~DataReader( );
2930 
2931  static void initialize_listener( DDS_DataReaderListener * core_listener,
2932  StatusMask nil_listeners );
2933  friend void dr_requested_deadline_missed_wrapper( _DataReader * dr, RequestedDeadlineMissedStatus status );
2934  friend void dr_requested_incompatible_qos_wrapper( _DataReader * dr, RequestedIncompatibleQosStatus status );
2935  friend void dr_sample_rejected_wrapper( _DataReader * dr, SampleRejectedStatus status );
2936  friend void dr_liveliness_changed_wrapper( _DataReader * dr, LivelinessChangedStatus status );
2937  friend void dr_data_available_wrapper( _DataReader * dr );
2938  friend void dr_subscription_matched_wrapper( _DataReader * dr, SubscriptionMatchedStatus status );
2939  friend void dr_sample_lost_wrapper( _DataReader * dr, SampleLostStatus status );
2940 
2941  struct DR_impl * _impl;
2942  }; // class DataReader
2943 
2944 
2945  // -------------------------------------------------------------
2946  // CONDITION
2947  // -------------------------------------------------------------
2955  class COREDX_CPP_CLASS_API Condition
2956  {
2957  //friend ConditionSeq;
2958  friend class WaitSet;
2959  public:
2965  virtual bool get_trigger_value();
2966  protected:
2967  Condition( struct _Condition * c );
2968  Condition(void);
2969  virtual ~Condition();
2970  struct _Condition * _condition;
2971  }; // class Condition
2972 
2973 
2974  // -------------------------------------------------------------
2975  // GUARD CONDITION
2976  // -------------------------------------------------------------
2982  class COREDX_CPP_CLASS_API GuardCondition : public Condition
2983  {
2984  public:
2985  GuardCondition( );
2986  GuardCondition( struct _GuardCondition * gc ); // deprecated - do not use
2987  ~GuardCondition( );
2993  bool get_trigger_value();
3003  ReturnCode_t set_trigger_value( bool v );
3004  protected:
3005  struct _GuardCondition * _guard_condition;
3006  }; // class GuardCondition
3007 
3008  // -------------------------------------------------------------
3009  // STATUS CONDITION
3010  // -------------------------------------------------------------
3016  class COREDX_CPP_CLASS_API StatusCondition : public Condition
3017  {
3018  friend class Entity;
3019  public:
3025  bool get_trigger_value();
3030  ReturnCode_t set_enabled_statuses( StatusMask mask );
3035  StatusMask get_enabled_statuses();
3039  Entity * get_entity();
3040  protected:
3041  StatusCondition( struct _StatusCondition * sc );
3042  ~StatusCondition();
3043  struct _StatusCondition * _status_condition;
3044  }; // Class StatusCondition
3045 
3046  // -------------------------------------------------------------
3047  // READ CONDITION
3048  // -------------------------------------------------------------
3057  class COREDX_CPP_CLASS_API ReadCondition : public Condition
3058  {
3059  friend class DataReader;
3060  public:
3066  bool get_trigger_value();
3070  DataReader * get_datareader();
3074  SampleStateKind get_sample_state_mask();
3078  ViewStateKind get_view_state_mask();
3082  InstanceStateKind get_instance_state_mask();
3083  protected:
3084  ReadCondition( struct _ReadCondition * rc );
3085  ~ReadCondition();
3086  struct _ReadCondition * _read_condition;
3087  }; // class ReadCondition
3088 
3089  // -------------------------------------------------------------
3090  // QUERY CONDITION
3091  // -------------------------------------------------------------
3099  class COREDX_CPP_CLASS_API QueryCondition : public ReadCondition
3100  {
3101  friend class DataReader;
3102  public:
3103  QueryCondition( struct _QueryCondition * qc );
3104  ~QueryCondition();
3111  const char * get_query_expression ( void );
3123  ReturnCode_t get_query_parameters ( StringSeq & seq);
3139  ReturnCode_t set_query_parameters ( const StringSeq & seq);
3140 
3141  protected:
3142  struct _QueryCondition * _query_condition;
3143  }; // class QueryCondition
3144 
3145  // -------------------------------------------------------------
3146  // WAIT SET
3147  // -------------------------------------------------------------
3156  class COREDX_CPP_CLASS_API WaitSet
3157  {
3158  public:
3159  WaitSet( );
3160  ~WaitSet();
3167  ReturnCode_t attach_condition( Condition & a_condition );
3168  ReturnCode_t attach_condition( Condition * a_condition );
3174  ReturnCode_t detach_condition( Condition & a_condition );
3189  ReturnCode_t wait ( ConditionSeq & active_conditions, const Duration_t & timeout );
3195  ReturnCode_t get_conditions ( ConditionSeq & attached_conditions );
3196  protected:
3197  struct _WaitSet * _wait_set;
3198  };
3199 
3200  // -------------------------------------------------------------
3201  // LISTENER
3202  // -------------------------------------------------------------
3203  class COREDX_CPP_CLASS_API Listener
3204  {
3205  public:
3206  Listener() { nil_listeners = 0; }
3207  virtual ~Listener() {};
3208 
3209  /* nil_listeners usage:
3210  * Set bits for those listeners you wish to declare as 'NIL' listeners.
3211  * Default is NO BITS SET, in other words, all of your listeners should
3212  * be called if enabled; there are no 'NIL' listeners.
3213  * In generally, this will only be used by those applications installing
3214  * both listeners AND condition variables on the same statuses.
3215  */
3216  StatusMask nil_listeners;
3217  };
3218 
3219  // -------------------------------------------------------------
3220  // DATA WRITER LISTENER
3221  // -------------------------------------------------------------
3233  class COREDX_CPP_CLASS_API DataWriterListener : virtual public Listener
3234  {
3235  public:
3236  DataWriterListener() {};
3237  virtual ~DataWriterListener() {};
3245  virtual void on_offered_deadline_missed ( DataWriter * /* the_writer */,
3246  const OfferedDeadlineMissedStatus & /* status */) {};
3253  virtual void on_offered_incompatible_qos( DataWriter * /* the_writer */,
3254  const OfferedIncompatibleQosStatus & /* status */) {};
3260  virtual void on_liveliness_lost ( DataWriter * /* the_writer */,
3261  const LivelinessLostStatus & /* status */) {};
3268  virtual void on_publication_matched ( DataWriter * /* the_writer */,
3269  const PublicationMatchedStatus & /* status */) {};
3270  };
3271 
3272  // -------------------------------------------------------------
3273  // PUBLISHER LISTENER
3274  // -------------------------------------------------------------
3286  class COREDX_CPP_CLASS_API PublisherListener : virtual public DataWriterListener
3287  {
3288  public:
3289  PublisherListener() {};
3290  virtual ~PublisherListener() {};
3291  };
3292 
3293  // -------------------------------------------------------------
3294  // TOPIC LISTENER
3295  // -------------------------------------------------------------
3306  class COREDX_CPP_CLASS_API TopicListener : virtual public Listener
3307  {
3308  public:
3309  TopicListener() {};
3310  virtual ~TopicListener() {};
3316  virtual void on_inconsistent_topic( Topic * /* the_topic */,
3317  const InconsistentTopicStatus & /* status */) {};
3318  };
3319 
3320  // -------------------------------------------------------------
3321  // DATA READER LISTENER
3322  // -------------------------------------------------------------
3334  class COREDX_CPP_CLASS_API DataReaderListener : virtual public Listener
3335  {
3336  public:
3337  DataReaderListener() {};
3338  virtual ~DataReaderListener() {};
3345  virtual void on_requested_deadline_missed ( DataReader * /* the_reader */,
3346  const RequestedDeadlineMissedStatus & /* status */) {};
3353  virtual void on_requested_incompatible_qos( DataReader * /* the_reader */,
3354  const RequestedIncompatibleQosStatus & /* status */) {};
3360  virtual void on_sample_rejected ( DataReader * /* the_reader */,
3361  const SampleRejectedStatus & /* status */) {};
3367  virtual void on_liveliness_changed ( DataReader * /* the_reader */,
3368  const LivelinessChangedStatus & /* status */) {};
3374  virtual void on_data_available ( DataReader * /* the_reader */) {};
3380  virtual void on_subscription_matched ( DataReader * /* the_reader */,
3381  const SubscriptionMatchedStatus & /* status */) {};
3387  virtual void on_sample_lost ( DataReader * /* the_reader */,
3388  const SampleLostStatus & /* status */) {};
3389  };
3390 
3391  // -------------------------------------------------------------
3392  // SUBSCRIBER LISTENER
3393  // -------------------------------------------------------------
3405  class COREDX_CPP_CLASS_API SubscriberListener : virtual public DataReaderListener
3406  {
3407  public:
3408  SubscriberListener() {};
3409  virtual ~SubscriberListener() {};
3416  virtual void on_data_on_readers( Subscriber * /* the_subscriber */ ) {};
3417  };
3418 
3419  // -------------------------------------------------------------
3420  // DOMAIN PARTICIPANT LISTENER
3421  // -------------------------------------------------------------
3433  class COREDX_CPP_CLASS_API DomainParticipantListener : virtual public PublisherListener,
3434  virtual public TopicListener,
3435  virtual public SubscriberListener
3436  {
3437  public:
3439  virtual ~DomainParticipantListener() {};
3440  };
3441 
3442  /* DDS_Time_t operator +(const DDS_Time_t &t1, const DDS_Duration_t &t2);
3443  DDS_Time_t operator +(const DDS_Time_t &t1, const DDS_Time_t &t2);
3444  DDS_Duration_t operator -(const DDS_Time_t &t1, const DDS_Time_t &t2);
3445  bool operator <(const DDS_Time_t &t1, const DDS_Time_t &t2);
3446  bool operator <=(const DDS_Time_t &t1, const DDS_Time_t &t2);
3447  bool operator ==(const DDS_Time_t &t1, const DDS_Time_t &t2);
3448  bool operator >=(const DDS_Time_t &t1, const DDS_Time_t &t2);
3449  bool operator >(const DDS_Time_t &t1, const DDS_Time_t &t2);
3450 
3451  DDS_Duration_t operator +(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3452  DDS_Duration_t operator -(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3453  bool operator <(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3454  bool operator <=(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3455  bool operator ==(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3456  bool operator >=(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3457  bool operator >(const DDS_Duration_t &t1, const DDS_Duration_t &t2);
3458  */
3459 
3460  Time_t operator+(const Time_t &t1, const Duration_t & t2);
3461  Time_t operator+(const Time_t &t1, const Time_t & t2);
3462  Duration_t operator-(const Time_t &t1, const Time_t & t2);
3463  bool operator <(const Time_t &t1, const Time_t &t2);
3464  bool operator <=(const Time_t &t1, const Time_t &t2);
3465  bool operator ==(const Time_t &t1, const Time_t &t2);
3466  bool operator >=(const Time_t &t1, const Time_t &t2);
3467  bool operator >(const Time_t &t1, const Time_t &t2);
3468 
3469 
3470  Duration_t operator+(const Duration_t &t1, const Duration_t & t2);
3471  Duration_t operator-(const Duration_t &t1, const Duration_t & t2);
3472 
3473 
3474  void String_free(char * str);
3475  char * String_dup(const char * other);
3476 
3477 } // namespace DDS
3478 
3479 
3480 #endif
unsigned int precache_max_samples
Maximum number of samples held in pre-cache [only for RELIABLE readers].
Definition: dds.hh:437
Definition: dds_builtin.hh:1866
The SubscriberListener provides asynchronous notification of Subscriber events.
Definition: dds.hh:3405
Duration_t dpd_push_period
Multicast DiscoveredParticipantData each period.
Definition: dds.hh:459
HistoryQosPolicy history
The data history requested by the DataReader.
Definition: dds.hh:683
long ReturnCode_t
Definition: dds.hh:200
ResourceLimitsQosPolicy resource_limits
The resource limits set on the DataWriter.
Definition: dds.hh:600
Determines instance ownership in the case of multple writers. CoreDX DDS supports both SHARED_OWNERSH...
Definition: dds_builtin.hh:652
Definition: dds_builtin.hh:1776
LoggingQosPolicy logging
Controls the logging behavior of the DataReader.
Definition: dds.hh:702
The DataWriter entity provides an interface for the application to publish (write) data...
Definition: dds.hh:2179
Status related to the on_offered_incompatible_qos listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:344
Definition: dds.hh:290
Encapsulates statistics available from a DataReader or DataWriter.
Definition: dds_types.h:419
The DurabilityQosPolicy controls the durablity of data.
Definition: dds_builtin.hh:405
Configures a list of DomainParticipant peers to attempt communication with.
Definition: dds.hh:396
DomainParticipantFactory constructs DomainParticipants. The.
Definition: dds.hh:941
ReaderDataLifecycleQosPolicy reader_data_lifecycle
Controls the auto-purge behavior of the DataReader.
Definition: dds.hh:688
TransportPriorityQosPolicy transport_priority
The transport priority supported by the DataWriter.
Definition: dds.hh:601
EntityNameQosPolicy entity_name
Controls the Entity name of the DataWriter.
Definition: dds.hh:614
The DomainParticipant is used to configure, create and destroy Publisher, Subscriber and Topic object...
Definition: dds.hh:1052
LatencyBudgetQosPolicy latency_budget
The latency allowed by the DataWriter.
Definition: dds.hh:595
Defines the strength, or priority, of a Writer. The strength is used to determine ownership in the ca...
Definition: dds_builtin.hh:704
unsigned int participant_id
participant id start
Definition: dds.hh:381
DurabilityQosPolicy durability
The durability policy of the Topic.
Definition: dds.hh:553
Status related to the on_liveliness_changed listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:296
EntityNameQosPolicy entity_name
Controls the Entity name of the DomainParticipant.
Definition: dds.hh:525
A hint to the middleware to help configure the transport priority mechanism.
Definition: dds_builtin.hh:269
DiscoveryQosPolicyDiscoveryKind
This enumeration contains the kinds of Discovery.
Definition: dds.hh:447
EntityFactoryQosPolicy entity_factory
Controls the behavior of the Subscriber.create_datareader() operation.
Definition: dds.hh:741
LivelinessQosPolicy liveliness
Identifies the mechanism used to detect and maintain livelines of DataWriters on the Topic...
Definition: dds.hh:557
virtual void on_offered_deadline_missed(DataWriter *, const OfferedDeadlineMissedStatus &)
Definition: dds.hh:3245
LifespanQosPolicy lifespan
The expiration time for old samples managed by the DataWriter.
Definition: dds.hh:602
DestinationOrderQosPolicy destination_order
The destination order logic offered by the DataWriter.
Definition: dds.hh:598
LivelinessQosPolicy liveliness
The liveliness mechanism offered by the DataWriter.
Definition: dds.hh:596
WriterDataLifecycleQosPolicy writer_data_lifecycle
Indicates if unregistered instances should be automatically disposed by the DataWriter.
Definition: dds.hh:606
virtual void on_requested_incompatible_qos(DataReader *, const RequestedIncompatibleQosStatus &)
Definition: dds.hh:3353
Definition: dds.hh:30
PresentationQosPolicy presentation
Controls the presentation of groups of changes.
Definition: dds.hh:724
Describes the data representation used by a topic.
Definition: dds_builtin.hh:1348
DDS_BUILTIN_TOPIC_KEY_TYPE_NATIVE guid_pid
specify the PID field of the GUID, leave as zero (0) for automatic
Definition: dds.hh:458
ResourceLimitsQosPolicy resource_limits
The resource limitations for the Topic.
Definition: dds.hh:561
ThreadModelQosPolicy thread_model
Controls the threading behavior of the DomainParticipant.
Definition: dds.hh:529
Indicates the level of reliability offered/provided by the Entity. If kind is RELIABLE_RELIABILITY_QO...
Definition: dds_builtin.hh:993
Duration_t autopurge_disposed_samples_delay
delay after which it is ok to purge samples from instances that are disposed
Definition: dds.hh:323
DDS::sequence< void * > Sequence
sequence of void pointers
Definition: dds.hh:252
Structure that holds Publisher Quality of Service policies.
Definition: dds.hh:633
TimeBasedFilterQosPolicy time_based_filter
The maximum update frequency required/desired by the DataReader.
Definition: dds.hh:687
Structure that holds DomainParticipantFactory Quality of Service policies.
Definition: dds.hh:499
Status related to the on_inconsistent_topic listener methods of the DDS_TopicListener structure...
Definition: dds_types.h:241
RTPSReaderQosPolicy rtps_reader
Controls aspects of the RTPS Reader protocol for the DataReader.
Definition: dds.hh:703
EntityFactoryQosPolicy entity_factory
Controls the behavior of the DomainParticipant &#39;create&#39; operations.
Definition: dds.hh:503
OwnershipStrengthQosPolicy ownership_strength
The measure of &#39;ownership strength&#39; offered by the DataWriter.
Definition: dds.hh:605
EntityNameQosPolicy entity_name
Controls the Entity name of the DataReader.
Definition: dds.hh:701
LoggingQosPolicy logging
Controls the logging behavior of the DataWriter.
Definition: dds.hh:615
DDS::sequence< Condition * > ConditionSeq
sequence of Condition pointers
Definition: dds.hh:250
uint32_t nanosec
Definition: dds_types.h:75
LivelinessQosPolicy liveliness
The liveliness mechanism requested by the DataReader.
Definition: dds.hh:680
unsigned char enable_batch_msg
use the &#39;BATCH&#39; RTPS message to send data if all Readers accept BATCH
Definition: dds.hh:421
Definition: dds_builtin.hh:1270
TypeConsistencyEnforcementQosPolicy type_consistency
Influences the algorithm that matches DataReaders and DataWriters based on their data type compatibil...
Definition: dds.hh:693
Duration_t nack_response_delay
The nack_response_delay to configure for builtin writers.
Definition: dds.hh:462
unsigned char send_typecode
send TYPECODE info for associated data type
Definition: dds.hh:422
unsigned char send_initial_nack
send a ACKNACK immediately after matching with a new Writer
Definition: dds.hh:467
Duration_t nack_response_delay
ammount of time allowed for responding to NACKs
Definition: dds.hh:415
Specifies the lifecycle behavior of data instances managed by the DataWriter. If autodispose_unregist...
Definition: dds.hh:307
Duration_t dpd_lease_duration
How long we consider a discoverd Participant to be alive without hearing from them.
Definition: dds.hh:460
ReliabilityQosPolicy reliability
The transport reliability requested by the DataReader.
Definition: dds.hh:681
A WaitSet maintains a set of Condition objects and allows the application to wait until one or more o...
Definition: dds.hh:3156
DestinationOrderQosPolicy destination_order
The ordering of received samples on the Topic will be either by SOURCE or RECEPTION timestamp...
Definition: dds.hh:559
DDS::sequence< InstanceHandle_t > InstanceHandleSeq
sequence of InstanceHandle_t s
Definition: dds.hh:248
EntityFactoryQosPolicy entity_factory
Controls the behavior of the Publisher.create_datawriter() operation.
Definition: dds.hh:653
The Subscriber configures, creates, manages and destroys DataReaders.
Definition: dds.hh:1743
ReliabilityQosPolicy reliability
Indicates the level of transport reliability on the Topic.
Definition: dds.hh:558
DataRepresentationQosPolicy representation
Informs DataReader(s) of the single data representation supported by this Writer. This must be consis...
Definition: dds.hh:607
Duration_t nack_suppress_delay
ammount of time to ignore NACKs after a repair
Definition: dds.hh:416
OwnershipQosPolicy ownership
The type of &#39;ownership&#39; offered by the DataReader.
Definition: dds.hh:686
LatencyBudgetQosPolicy latency_budget
The latency requested by the DataReader.
Definition: dds.hh:679
unsigned int max_buffer_size
max size in bytes of written data
Definition: dds.hh:419
The DomainParticipant will connect to the CoreDX DDS CDD for discovery.
Definition: dds.hh:449
virtual void on_sample_lost(DataReader *, const SampleLostStatus &)
Definition: dds.hh:3387
unsigned char autoenable_created_entities
should created entities be automatically enabled
Definition: dds.hh:291
Status related to the on_liveliness_lost listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:285
virtual void on_requested_deadline_missed(DataReader *, const RequestedDeadlineMissedStatus &)
Definition: dds.hh:3345
PartitionQosPolicy partition
Establishes a logical data partition.
Definition: dds.hh:732
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:2125
Definition: dds_types.h:72
TopicDescription is an abstract &#39;class&#39; that provides the foundation for Topic, ContentFilteredTopic...
Definition: dds.hh:1956
EntityNameQosPolicy entity_name
Controls the Entity name of the Subscriber.
Definition: dds.hh:742
The DataReaderListener provides asynchronous notification of DataReader events.
Definition: dds.hh:3334
Controls the amount and kind of information that is logged.
Definition: dds.hh:355
UserDataQosPolicy user_data
A sequence of octets associated with the DataWriter.
Definition: dds.hh:603
DDS::sequence< DataReader * > DataReaderSeq
sequence of DataReader pointers
Definition: dds.hh:246
virtual void on_offered_incompatible_qos(DataWriter *, const OfferedIncompatibleQosStatus &)
Definition: dds.hh:3253
A ReadCondition is a specialized Condition associated with a DataReader.
Definition: dds.hh:3057
Definition: dds_builtin_basic.hh:141
EntityFactoryQosPolicy entity_factory
Controls the behavior of the DomainParticipant create operations.
Definition: dds.hh:524
UserDataQosPolicy user_data
A sequence of octets associated with the DataReader.
Definition: dds.hh:685
GroupDataQosPolicy group_data
A sequence of octets associated with the Publisher.
Definition: dds.hh:652
unsigned char send_initial_nack
send a ACKNACK immediately after matching with a new Writer
Definition: dds.hh:436
LoggingQosPolicy logging
Controls the logging behavior of the Subscriber.
Definition: dds.hh:743
The DataReader entity allows the application to subscribe to and read data.
Definition: dds.hh:2466
A QueryCondition is a specialized ReadCondition which includes a filter.
Definition: dds.hh:3099
DDS::DiscoveryQosPolicyDiscoveryKind discovery_kind
the kind of discovery to employ
Definition: dds.hh:457
Duration_t autopurge_nowriter_samples_delay
delay after which it is ok to purge samples from instances with no writer(s)
Definition: dds.hh:322
virtual void on_data_available(DataReader *)
Definition: dds.hh:3374
A GuardCondition is a condition where the trigger_value is under application control.
Definition: dds.hh:2982
Structure that holds Subscriber Quality of Service policies.
Definition: dds.hh:721
Status related to the on_offered_deadline_missed listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:310
Specifies allowable latency.
Definition: dds_builtin.hh:593
DeadlineQosPolicy deadline
The requested update frequency for data instances.
Definition: dds.hh:678
unsigned int flags
flags to control logging output
Definition: dds.hh:356
UserDataQosPolicy user_data
A sequence of octets associated with a DomainParticipant.
Definition: dds.hh:523
The PublisherListener provides asynchronous notification of Publisher events.
Definition: dds.hh:3286
Topic is the basic description of data to be published or subscribed.
Definition: dds.hh:1997
Network address.
Definition: dds.hh:371
DeadlineQosPolicy deadline
The deadline committed to by the DataWriter.
Definition: dds.hh:594
Holds a DDS_QosPolicyId_t value and a counter to indicate the number of events associated with that P...
Definition: dds_types.h:332
Definition: dds_builtin.hh:1723
unsigned char strict_match
Definition: dds.hh:398
virtual void on_subscription_matched(DataReader *, const SubscriptionMatchedStatus &)
Definition: dds.hh:3380
Duration_t heartbeat_response_delay
ammount of time allowed for responding to a heartbeat
Definition: dds.hh:433
The SampleInfo structure contains information associated with each sample.
Definition: dds_types.h:159
HistoryQosPolicy history
The amount of historical data maintained for the Topic.
Definition: dds.hh:560
Augment a DataWriter or DataReader with RPC specific information.
Definition: dds_builtin.hh:1510
A StatusCondition is a condition associated with an Entity.
Definition: dds.hh:3016
DDS::sequence< unsigned char > OctetSeq
sequence of octets
Definition: dds.hh:256
DataRepresentationQosPolicy representation
Informs DataWriter(s) of the data representation(s) supported by this Reader. This must be consistent...
Definition: dds.hh:689
RpcQosPolicy rpc
Configure RPC relevant settings: instance_name, related_entity, and topic_aliases.
Definition: dds.hh:611
Provides the DDS infrastructure.
Definition: dds_builtin_basic.hh:28
Duration_t heartbeat_response_delay
The heartbeat_response_delay to configure for builtin readers.
Definition: dds.hh:466
A Condition can be added to a WaitSet to provide synchronous event notification.
Definition: dds.hh:2955
Base class for all DDS Domain Entities.
Definition: dds.hh:928
GroupDataQosPolicy group_data
A sequence of octets associated with the Publisher.
Definition: dds.hh:740
PeerParticipantQosPolicy peer_participants
Specifies a list of DomainParticipant peers to attempt communication with. If empty, default Discovery is used.
Definition: dds.hh:527
RTPSWriterQosPolicy rtps_writer
Controls aspects of the RTPS Writer protocol for the DataWriter.
Definition: dds.hh:616
Controls the ammount of historical data maintained by a DataReader or DataWriter. ...
Definition: dds_builtin.hh:1139
TopicDataQosPolicy topic_data
A sequence of octets associated with a Topic.
Definition: dds.hh:552
OwnershipQosPolicy ownership
The type of &#39;ownership&#39; expected for data instances on the Topic.
Definition: dds.hh:564
unsigned int max_buffer_size
The max_buffer_size to configure for builtin writers.
Definition: dds.hh:465
Definition: dds.hh:339
Defines a logical data partition.
Definition: dds_builtin.hh:916
Allows the application to attach arbitrary information to a DomainParticipant, DataWriter or DataRead...
Definition: dds_builtin.hh:106
LoggingQosPolicy logging
Controls the logging behavior of the Publisher.
Definition: dds.hh:655
DestinationOrderQosPolicy destination_order
The destination order logic requested by the DataReader.
Definition: dds.hh:682
Allows the application to attach arbitrary information to a Publisher or Subscriber.
Definition: dds_builtin.hh:221
unsigned char accept_batch_msg
allow writers to use the &#39;BATCH&#39; RTPS message
Definition: dds.hh:434
rules for determining type consistency
Definition: dds_builtin.hh:1409
DDS_DOMAINID_TYPE_NATIVE DomainId_t
Definition: dds.hh:198
DDS::sequence< char * > StringSeq
sequence of character pointers (c strings)
Definition: dds.hh:254
The TopicListener provides asynchronous notification of Topic events.
Definition: dds.hh:3306
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:556
Definition: dds_builtin.hh:1676
PropertyQosPolicy properties
Additional name:value pair properties (if propagate=true, included in discovery)
Definition: dds.hh:530
QoS Policy for configuring aspects of the RTPS Reader Protocol.
Definition: dds.hh:432
virtual void on_sample_rejected(DataReader *, const SampleRejectedStatus &)
Definition: dds.hh:3360
Definition: dds_builtin_basic.hh:239
LoggingQosPolicy logging
Controls the logging behavior of the DomainParticipant.
Definition: dds.hh:526
DurabilityQosPolicy durability
The durability policy requested by the DataReader.
Definition: dds.hh:677
Duration_t ack_deadline
after which a realiable reader will be considered unresponsive
Definition: dds.hh:417
HistoryQosPolicy history
The data history maintained by the DataWriter.
Definition: dds.hh:599
Structure that holds Topic Quality of Service policies.
Definition: dds.hh:549
Structure that holds DataWriter Quality of Service policies.
Definition: dds.hh:589
unsigned int participant_id_max
participant id max
Definition: dds.hh:382
LifespanQosPolicy lifespan
The &#39;expiration time&#39; for old data samples on the Topic.
Definition: dds.hh:563
DeadlineQosPolicy deadline
Defines the expected update frequency for data instances within the Topic.
Definition: dds.hh:555
DurabilityServiceQosPolicy durability_service
The durability service configuration offered by the DataWriter.
Definition: dds.hh:593
unsigned long StatusMask
Definition: dds.hh:209
Describes a the location and identity of a potential peer DomainParticipant.
Definition: dds.hh:380
ReliabilityQosPolicy reliability
The transport reliability offered by the DataWriter.
Definition: dds.hh:597
Base class for all DDS Entities.
Definition: dds.hh:884
QoS Policy for configuring aspects of the Discovery and Builtin entities.
Definition: dds.hh:456
Duration_t heartbeat_period
period to transmit heartbeat messages if required
Definition: dds.hh:414
The DomainParticipantListener provides asynchronous notification of DomainParticipant events...
Definition: dds.hh:3433
The DataWriterListener provides asynchronous notification of DataWriter events.
Definition: dds.hh:3233
DataRepresentationQosPolicy representation
The data representation(s) supported by Writer(s) and Reader(s) of this topic. The first entry in the...
Definition: dds.hh:565
This QoS policy controls how each Subscriber orders received data samples.
Definition: dds_builtin.hh:1060
Duration_t nack_suppress_delay
The nack_suppress_delay to configure for builtin writers.
Definition: dds.hh:463
TransportPriorityQosPolicy transport_priority
The priority to be used for messages on the Topic.
Definition: dds.hh:562
Status related to the on_requested_deadline_missed listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:321
EntityNameQosPolicy entity_name
Controls the Entity name of the Topic.
Definition: dds.hh:569
DurabilityServiceQosPolicy durability_service
Configures the service supporting the TRANSIENT and PERSITENT durability kinds.
Definition: dds.hh:554
Controls the presentation of received data samples to the application. CoreDX DDS currently supports ...
Definition: dds_builtin.hh:467
Structure that holds DomainParticipant Quality of Service policies.
Definition: dds.hh:521
Determines the mechanism and parameters used by the application to determine whether an Entity is ali...
Definition: dds_builtin.hh:789
unsigned char autodispose_unregistered_instances
should the writer dispose instances that are unregistered
Definition: dds.hh:308
virtual void on_data_on_readers(Subscriber *)
Definition: dds.hh:3416
Allows the application to attach arbitrary information to a Topic QoS.
Definition: dds_builtin.hh:163
Status related to the on_publication_matched listener methods of the DDS_DataWriter, DDS_Publisher, and DDS_DomainParticipant structures.
Definition: dds_types.h:370
Structure that holds DataReader Quality of Service policies.
Definition: dds.hh:674
This QoS policy establishes a minimum update period for data instances.
Definition: dds_builtin.hh:535
PartitionQosPolicy partition
Establishes a logical data partition.
Definition: dds.hh:644
virtual void on_publication_matched(DataWriter *, const PublicationMatchedStatus &)
Definition: dds.hh:3268
Specifies the lifecycle behavior of data instances managed by the DataReader.
Definition: dds.hh:321
virtual void on_inconsistent_topic(Topic *, const InconsistentTopicStatus &)
Definition: dds.hh:3316
int sec
Definition: dds_types.h:74
DDS_HANDLE_TYPE_NATIVE InstanceHandle_t
Definition: dds.hh:199
DiscoveryQosPolicy discovery
Controls aspects of the Discovery and Builtin entities.
Definition: dds.hh:528
ParticipantLocatorSeq value
sequence of peer locators with which we should attempt communication
Definition: dds.hh:397
unsigned char create_listener_thread
should the DomainParticipant create a separate thread for invoking listener callback routines ...
Definition: dds.hh:481
The DomainParticipant will use the standard peer-to-peer discovery.
Definition: dds.hh:448
Status related to the on_subscription_matched listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:384
The Time_t structure contains data to define a time.
Definition: dds.hh:214
virtual void on_liveliness_changed(DataReader *, const LivelinessChangedStatus &)
Definition: dds.hh:3367
unsigned char apply_filters
apply ContentFilter(s) at the writer (writer side filtering)
Definition: dds.hh:420
RpcQosPolicy rpc
Configure RPC relevant settings: instance_name, related_entity, and topic_aliases.
Definition: dds.hh:697
The Publisher configures, creates, manages and destroys DataWriters.
Definition: dds.hh:1534
Status related to the on_requested_incompatible_qos listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:357
QoS Policy for configuring the threading behavior of the DomainParticipant.
Definition: dds.hh:479
Specifies the maximum duration of validity of the data written by the DataWriter. ...
Definition: dds_builtin.hh:320
LoggingQosPolicy logging
Controls the logging behavior of the Topic.
Definition: dds.hh:570
unsigned int min_buffer_size
min size in bytes of written data
Definition: dds.hh:418
unsigned int min_buffer_size
The min_buffer_size to configure for builtin writers.
Definition: dds.hh:464
virtual void on_liveliness_lost(DataWriter *, const LivelinessLostStatus &)
Definition: dds.hh:3260
DDS::sequence< SampleInfo * > SampleInfoSeq
sequence of SampleInfo pointers
Definition: dds.hh:244
Defines a filter based on time between samples. The DataReader indicates that it wants at most one sa...
Definition: dds_builtin.hh:844
unsigned char use_threads
should the DomainParticipant use threads for internal work
Definition: dds.hh:480
Status related to the on_sample_lost listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:253
The Duration_t structure contains data to define a time duration.
Definition: dds_builtin.hh:45
unsigned char send_msglen_submsg
include &#39;msglen&#39; submessage in RTPS header
Definition: dds.hh:468
QoS Policy for configuring aspects of the RTPS Writer Protocol.
Definition: dds.hh:413
EntityNameQosPolicy entity_name
Controls the Entity name of the Publisher.
Definition: dds.hh:654
unsigned char send_typecode
send TYPECODE info for associated data type
Definition: dds.hh:435
Duration_t heartbeat_period
The heartbeat_period to configure for builtin writers.
Definition: dds.hh:461
Locator participant_locator
locator identifying peer participant
Definition: dds.hh:383
Specifies the resources that the Service can use to maintain data samples and instances.
Definition: dds_builtin.hh:1193
DurabilityQosPolicy durability
The durability policy offered by the DataWriter.
Definition: dds.hh:592
PresentationQosPolicy presentation
Controls the presentation of groups of changes.
Definition: dds.hh:636
Status related to the on_sample_rejected listener methods of the DDS_DataReader, DDS_Subscriber, and DDS_DomainParticipant structures.
Definition: dds_types.h:272
ResourceLimitsQosPolicy resource_limits
The resource limits set on the DataReader.
Definition: dds.hh:684
OwnershipQosPolicy ownership
The type of &#39;ownership&#39; offered by the DataWriter.
Definition: dds.hh:604

© 2009-2017 Twin Oaks Computing, Inc
Castle Rock, CO 80108
All rights reserved.