OpenDDS  Snapshot(2023/04/28-20:55)
Observer.h
Go to the documentation of this file.
1 /*
2  *
3  *
4  * Distributed under the OpenDDS License.
5  * See: http://www.opendds.org/license.html
6  */
7 
8 #ifndef OPENDDS_DCPS_OBSERVER_H
9 #define OPENDDS_DCPS_OBSERVER_H
10 
11 #include "RcObject.h"
12 #include "Definitions.h"
13 #include "SequenceNumber.h"
14 #include "ValueDispatcher.h"
16 
17 #include <dds/DdsDcpsCoreTypeSupportImpl.h>
18 #include <dds/DdsDcpsPublicationC.h>
19 #include <dds/DdsDcpsSubscriptionC.h>
20 #include <dds/DdsDcpsInfoUtilsC.h>
21 
22 #if !defined (ACE_LACKS_PRAGMA_ONCE)
23 #pragma once
24 #endif /* ACE_LACKS_PRAGMA_ONCE */
25 
27 
28 namespace OpenDDS {
29 namespace DCPS {
30 
31 class DataSampleElement;
32 class ReceivedDataSample;
33 class ReceivedDataElement;
34 
36  : public virtual RcObject
37 {
38 public:
39  typedef unsigned long Event;
40  enum {
41  e_ENABLED = 0x0001 << 0,
42  e_DELETED = 0x0001 << 1,
43  e_QOS_CHANGED = 0x0001 << 2,
44  e_ASSOCIATED = 0x0001 << 3,
45  e_DISASSOCIATED = 0x0001 << 4,
46  e_SAMPLE_SENT = 0x0001 << 5,
47  e_SAMPLE_RECEIVED = 0x0001 << 6,
48  e_SAMPLE_READ = 0x0001 << 7,
49  e_SAMPLE_TAKEN = 0x0001 << 8,
50  e_NONE = 0x0000,
51  e_ALL = 0xffff
52  };
53 
55  {
60  const void* data;
62 
64  DDS::InstanceStateKind instance_state,
65  const DDS::Time_t& timestamp,
66  const SequenceNumber& sequence_number,
67  const void* data,
68  const ValueDispatcher& data_dispatcher);
69 
71  DDS::InstanceStateKind instance_state,
72  const ReceivedDataElement& rde,
73  const ValueDispatcher& data_dispatcher);
74  };
75 
76  // Group 1: Reader/Writer enabled, deleted, QoS changed
77  virtual void on_enabled(DDS::DataWriter_ptr) {}
78  virtual void on_enabled(DDS::DataReader_ptr) {}
79  virtual void on_deleted(DDS::DataWriter_ptr) {}
80  virtual void on_deleted(DDS::DataReader_ptr) {}
81  virtual void on_qos_changed(DDS::DataWriter_ptr) {}
82  virtual void on_qos_changed(DDS::DataReader_ptr) {}
83 
84  // Group 2: Peer associated, disassociated
85  virtual void on_associated(DDS::DataWriter_ptr, const GUID_t& /* readerId */) {}
86  virtual void on_associated(DDS::DataReader_ptr, const GUID_t& /* writerId */) {}
87  virtual void on_disassociated(DDS::DataWriter_ptr, const GUID_t& /* readerId */) {}
88  virtual void on_disassociated(DDS::DataReader_ptr, const GUID_t& /* writerId */) {}
89 
90  // Group 3: Sample sent, received, read, taken
91  virtual void on_sample_sent(DDS::DataWriter_ptr, const Sample&) {}
92  virtual void on_sample_received(DDS::DataReader_ptr, const Sample&) {}
93  virtual void on_sample_read(DDS::DataReader_ptr, const Sample&) {}
94  virtual void on_sample_taken(DDS::DataReader_ptr, const Sample&) {}
95 
96  virtual ~Observer();
97 protected:
98  Observer() {}
99 };
100 
102 
104 vwrite(ValueWriter& vw, const Observer::Sample& sample);
105 
106 } // namespace DCPS
107 } // namespace OpenDDS
108 
110 
111 #endif // OPENDDS_DCPS_OBSERVER_H
void vwrite(ValueWriter &vw, const Observer::Sample &sample)
Definition: Observer.cpp:51
virtual void on_deleted(DDS::DataWriter_ptr)
Definition: Observer.h:79
virtual void on_sample_taken(DDS::DataReader_ptr, const Sample &)
Definition: Observer.h:94
virtual void on_enabled(DDS::DataReader_ptr)
Definition: Observer.h:78
#define OpenDDS_Dcps_Export
Definition: dcps_export.h:24
DDS::InstanceStateKind instance_state
Definition: Observer.h:57
virtual void on_disassociated(DDS::DataWriter_ptr, const GUID_t &)
Definition: Observer.h:87
virtual void on_sample_received(DDS::DataReader_ptr, const Sample &)
Definition: Observer.h:92
virtual void on_disassociated(DDS::DataReader_ptr, const GUID_t &)
Definition: Observer.h:88
SequenceNumber sequence_number
Definition: Observer.h:59
unsigned long Event
Definition: Observer.h:39
DDS::InstanceHandle_t instance
Definition: Observer.h:56
RcHandle< Observer > Observer_rch
Definition: Observer.h:101
virtual void on_qos_changed(DDS::DataReader_ptr)
Definition: Observer.h:82
unsigned long InstanceStateKind
virtual void on_sample_read(DDS::DataReader_ptr, const Sample &)
Definition: Observer.h:93
HANDLE_TYPE_NATIVE InstanceHandle_t
Definition: DdsDcpsCore.idl:51
virtual void on_enabled(DDS::DataWriter_ptr)
Definition: Observer.h:77
Sequence number abstraction. Only allows positive 64 bit values.
virtual void on_associated(DDS::DataReader_ptr, const GUID_t &)
Definition: Observer.h:86
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
virtual void on_sample_sent(DDS::DataWriter_ptr, const Sample &)
Definition: Observer.h:91
virtual void on_associated(DDS::DataWriter_ptr, const GUID_t &)
Definition: Observer.h:85
virtual void on_qos_changed(DDS::DataWriter_ptr)
Definition: Observer.h:81
const ValueDispatcher & data_dispatcher
Definition: Observer.h:61
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28
virtual void on_deleted(DDS::DataReader_ptr)
Definition: Observer.h:80