Line data Source code
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" 13 : #include "ReceivedDataElementList.h" 14 : #include "XTypes/MemberDescriptorImpl.h" 15 : #include "transport/framework/ReceivedDataSample.h" 16 : 17 : OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL 18 : 19 : namespace OpenDDS { 20 : namespace DCPS { 21 : 22 0 : Observer::Sample::Sample(DDS::InstanceHandle_t a_instance, 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 0 : const ValueDispatcher& a_data_dispatcher) 28 0 : : instance(a_instance) 29 0 : , instance_state(a_instance_state) 30 0 : , timestamp(a_timestamp) 31 0 : , sequence_number(a_sequence_number) 32 0 : , data(a_data) 33 0 : , data_dispatcher(a_data_dispatcher) 34 0 : {} 35 : 36 0 : Observer::Sample::Sample(DDS::InstanceHandle_t a_instance, 37 : DDS::InstanceStateKind a_instance_state, 38 : const ReceivedDataElement& a_rde, 39 0 : const ValueDispatcher& a_data_dispatcher) 40 0 : : instance(a_instance) 41 0 : , instance_state(a_instance_state) 42 0 : , timestamp(a_rde.source_timestamp_) 43 0 : , sequence_number(a_rde.sequence_) 44 0 : , data(a_rde.registered_data_) 45 0 : , data_dispatcher(a_data_dispatcher) 46 0 : {} 47 : 48 0 : Observer::~Observer() {} 49 : 50 : void 51 0 : vwrite(ValueWriter& vw, const Observer::Sample& sample) 52 : { 53 0 : vw.begin_struct(); 54 0 : vw.begin_struct_member(XTypes::MemberDescriptorImpl("instance", false)); 55 0 : vw.write_int32(sample.instance); 56 0 : vw.end_struct_member(); 57 0 : vw.begin_struct_member(XTypes::MemberDescriptorImpl("instance_state", false)); 58 0 : vw.write_uint32(sample.instance_state); 59 0 : vw.end_struct_member(); 60 0 : vw.begin_struct_member(XTypes::MemberDescriptorImpl("timestamp", false)); 61 0 : vwrite(vw, sample.timestamp); 62 0 : vw.end_struct_member(); 63 0 : vw.begin_struct_member(XTypes::MemberDescriptorImpl("sequence_number", false)); 64 0 : vw.write_int64(sample.sequence_number.getValue()); 65 0 : vw.end_struct_member(); 66 0 : vw.begin_struct_member(XTypes::MemberDescriptorImpl("data", false)); 67 0 : sample.data_dispatcher.write(vw, sample.data); 68 0 : vw.end_struct_member(); 69 0 : vw.end_struct(); 70 0 : } 71 : 72 : } // namespace DCPS 73 : } // namespace OpenDDS 74 : 75 : OPENDDS_END_VERSIONED_NAMESPACE_DECL