OpenDDS  Snapshot(2023/04/28-20:55)
DynamicSample.h
Go to the documentation of this file.
1 /*
2  * Distributed under the OpenDDS License.
3  * See: http://www.opendds.org/license.html
4  */
5 
6 #ifndef OPENDDS_DCPS_XTYPES_DYNAMIC_SAMPLE_H
7 #define OPENDDS_DCPS_XTYPES_DYNAMIC_SAMPLE_H
8 
9 #ifndef OPENDDS_SAFETY_PROFILE
10 
11 #include <dds/DCPS/Sample.h>
12 
14 namespace OpenDDS {
15 namespace XTypes {
16 
18 public:
19  DynamicSample();
21  DynamicSample& operator=(const DynamicSample&);
22 
23  DynamicSample(DDS::DynamicData_ptr data,
24  Mutability mutability, Extent extent)
25  : Sample(mutability, extent)
26  , data_(DDS::DynamicData::_duplicate(data))
27  {
28  }
29 
30  DynamicSample(DDS::DynamicData_ptr data, Extent extent)
31  : Sample(Sample::ReadOnly, extent)
32  , data_(DDS::DynamicData::_duplicate(data))
33  {
34  }
35 
36  DynamicSample(DDS::DynamicData_ptr data)
37  : Sample(Sample::ReadOnly, Sample::Full)
38  , data_(DDS::DynamicData::_duplicate(data))
39  {
40  }
41 
42  void set_key_only(bool k) { extent_ = k ? Sample::KeyOnly : Sample::Full; }
43 
44  bool serialize(DCPS::Serializer& ser) const;
45  bool deserialize(DCPS::Serializer& ser);
46  size_t serialized_size(const DCPS::Encoding& enc) const;
47  bool compare(const DCPS::Sample& other) const;
48 
50  {
51  // Not needed
52  OPENDDS_ASSERT(false);
53  return false;
54  }
55 
57  {
58  // Not needed
59  OPENDDS_ASSERT(false);
60  return false;
61  }
62 
64  {
65  DDS::DynamicData_var dd = data_->clone();
66  return DCPS::make_rch<DynamicSample>(dd, mutability, extent);
67  }
68 
69  DDS::DynamicData_var get_dynamic_data(DDS::DynamicType_ptr) const
70  {
71  return data_;
72  }
73 
74  DDS::DynamicData_var dynamic_data() const
75  {
76  return data_;
77  }
78 
79  const void* native_data() const
80  {
81  return 0;
82  }
83 
84 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE
85  bool eval(DCPS::FilterEvaluator& evaluator, const DDS::StringSeq& params) const
86  {
87  return evaluator.eval(*this, params);
88  }
89 #endif
90 
91  struct KeyLessThan {
92  bool operator()(const DynamicSample& lhs, const DynamicSample& rhs) const
93  {
94  return lhs.compare(rhs);
95  }
96  };
97 
98 protected:
99  DDS::DynamicData_var data_;
100 };
101 
102 }
103 }
105 
106 #endif
107 #endif
bool from_message_block(const ACE_Message_Block &)
Definition: DynamicSample.h:56
#define OpenDDS_Dcps_Export
Definition: dcps_export.h:24
#define OPENDDS_ASSERT(C)
Definition: Definitions.h:72
bool to_message_block(ACE_Message_Block &) const
Definition: DynamicSample.h:49
void serialized_size(const Encoding &encoding, size_t &size, const SequenceNumber &)
T * _duplicate(T *st)
DCPS::Sample_rch copy(DCPS::Sample::Mutability mutability, DCPS::Sample::Extent extent) const
Definition: DynamicSample.h:63
bool eval(DCPS::FilterEvaluator &evaluator, const DDS::StringSeq &params) const
Definition: DynamicSample.h:85
DynamicSample(DDS::DynamicData_ptr data, Mutability mutability, Extent extent)
Definition: DynamicSample.h:23
const void * native_data() const
Definition: DynamicSample.h:79
Class to serialize and deserialize data for DDS.
Definition: Serializer.h:369
DynamicSample(DDS::DynamicData_ptr data)
Definition: DynamicSample.h:36
DDS::DynamicData_var get_dynamic_data(DDS::DynamicType_ptr) const
Definition: DynamicSample.h:69
bool compare(const DCPS::Sample &other) const
DDS::DynamicData_var dynamic_data() const
Definition: DynamicSample.h:74
The End User API.
DynamicSample(DDS::DynamicData_ptr data, Extent extent)
Definition: DynamicSample.h:30
bool eval(const T &sample, const DDS::StringSeq &params) const
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
bool operator()(const DynamicSample &lhs, const DynamicSample &rhs) const
Definition: DynamicSample.h:92
DDS::DynamicData_var data_
Definition: DynamicSample.h:99
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28
sequence< string > StringSeq
Definition: DdsDcpsCore.idl:50