OpenDDS  Snapshot(2023/04/28-20:55)
Observer.cpp
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 #include "DCPS/DdsDcps_pch.h"
9 
10 #include "Observer.h"
11 
12 #include "DataSampleElement.h"
16 
18 
19 namespace OpenDDS {
20 namespace DCPS {
21 
23  DDS::InstanceStateKind a_instance_state,
24  const DDS::Time_t& a_timestamp,
25  const SequenceNumber& a_sequence_number,
26  const void* a_data,
27  const ValueDispatcher& a_data_dispatcher)
28  : instance(a_instance)
29  , instance_state(a_instance_state)
30  , timestamp(a_timestamp)
31  , sequence_number(a_sequence_number)
32  , data(a_data)
33  , data_dispatcher(a_data_dispatcher)
34 {}
35 
37  DDS::InstanceStateKind a_instance_state,
38  const ReceivedDataElement& a_rde,
39  const ValueDispatcher& a_data_dispatcher)
40  : instance(a_instance)
41  , instance_state(a_instance_state)
42  , timestamp(a_rde.source_timestamp_)
43  , sequence_number(a_rde.sequence_)
44  , data(a_rde.registered_data_)
45  , data_dispatcher(a_data_dispatcher)
46 {}
47 
49 
50 void
51 vwrite(ValueWriter& vw, const Observer::Sample& sample)
52 {
53  vw.begin_struct();
55  vw.write_int32(sample.instance);
56  vw.end_struct_member();
57  vw.begin_struct_member(XTypes::MemberDescriptorImpl("instance_state", false));
58  vw.write_uint32(sample.instance_state);
59  vw.end_struct_member();
60  vw.begin_struct_member(XTypes::MemberDescriptorImpl("timestamp", false));
61  vwrite(vw, sample.timestamp);
62  vw.end_struct_member();
63  vw.begin_struct_member(XTypes::MemberDescriptorImpl("sequence_number", false));
65  vw.end_struct_member();
67  sample.data_dispatcher.write(vw, sample.data);
68  vw.end_struct_member();
69  vw.end_struct();
70 }
71 
72 } // namespace DCPS
73 } // namespace OpenDDS
74 
void vwrite(ValueWriter &vw, const Observer::Sample &sample)
Definition: Observer.cpp:51
DDS::InstanceStateKind instance_state
Definition: Observer.h:57
SequenceNumber sequence_number
Definition: Observer.h:59
DDS::InstanceHandle_t instance
Definition: Observer.h:56
virtual void write_int32(ACE_CDR::Long)=0
unsigned long InstanceStateKind
virtual void write_int64(ACE_CDR::LongLong)=0
virtual void write(ValueWriter &value_writer, const void *data) const =0
HANDLE_TYPE_NATIVE InstanceHandle_t
Definition: DdsDcpsCore.idl:51
virtual void begin_struct_member(const DDS::MemberDescriptor &)
Definition: ValueWriter.h:45
Sequence number abstraction. Only allows positive 64 bit values.
virtual void end_struct_member()
Definition: ValueWriter.h:46
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
virtual void write_uint32(ACE_CDR::ULong)=0
Sample(DDS::InstanceHandle_t instance, DDS::InstanceStateKind instance_state, const DDS::Time_t &timestamp, const SequenceNumber &sequence_number, const void *data, const ValueDispatcher &data_dispatcher)
Definition: Observer.cpp:22
virtual void begin_struct()
Definition: ValueWriter.h:43
virtual void end_struct()
Definition: ValueWriter.h:44
const ValueDispatcher & data_dispatcher
Definition: Observer.h:61
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28
ACE_TCHAR * timestamp(const ACE_Time_Value &time_value, ACE_TCHAR date_and_time[], size_t time_len, bool return_pointer_to_first_digit=false)