OpenDDS  Snapshot(2023/04/28-20:55)
Public Member Functions | Public Attributes | List of all members
OpenDDS::DCPS::FilterEvaluator::SerializedForEval Struct Reference
Inheritance diagram for OpenDDS::DCPS::FilterEvaluator::SerializedForEval:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::FilterEvaluator::SerializedForEval:
Collaboration graph
[legend]

Public Member Functions

 SerializedForEval (ACE_Message_Block *data, const TypeSupportImpl &type_support, const DDS::StringSeq &params, Encoding encoding)
 
Value lookup (const char *field) const
 
 OPENDDS_MAP (OPENDDS_STRING, Value) cache_
 
- Public Member Functions inherited from OpenDDS::DCPS::FilterEvaluator::DataForEval
 DataForEval (const MetaStruct &meta, const DDS::StringSeq &params)
 
virtual ~DataForEval ()
 

Public Attributes

ACE_Message_Blockserialized_
 
Encoding encoding_
 
const TypeSupportImpltype_support_
 
Extensibility exten_
 
- Public Attributes inherited from OpenDDS::DCPS::FilterEvaluator::DataForEval
const MetaStructmeta_
 
const DDS::StringSeqparams_
 

Detailed Description

Definition at line 164 of file FilterEvaluator.h.

Constructor & Destructor Documentation

◆ SerializedForEval()

OpenDDS::DCPS::FilterEvaluator::SerializedForEval::SerializedForEval ( ACE_Message_Block data,
const TypeSupportImpl type_support,
const DDS::StringSeq params,
Encoding  encoding 
)

Definition at line 121 of file FilterEvaluator.cpp.

125  : DataForEval(type_support.getMetaStructForType(), params)
126  , serialized_(data)
128  , type_support_(type_support)
129  , exten_(type_support.base_extensibility())
130 {}
DataForEval(const MetaStruct &meta, const DDS::StringSeq &params)
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)

Member Function Documentation

◆ lookup()

Value OpenDDS::DCPS::FilterEvaluator::SerializedForEval::lookup ( const char *  field) const
virtual

Implements OpenDDS::DCPS::FilterEvaluator::DataForEval.

Definition at line 133 of file FilterEvaluator.cpp.

References ACE_ERROR, ACE_TEXT(), ACE_Message_Block::duplicate(), OpenDDS::STUN::encoding(), encoding_, exten_, OpenDDS::DCPS::MetaStruct::getValue(), OpenDDS::DCPS::Encoding::is_encapsulated(), LM_ERROR, OpenDDS::DCPS::FilterEvaluator::DataForEval::meta_, OPENDDS_MAP(), OPENDDS_STRING, serialized_, OpenDDS::DCPS::EncapsulationHeader::to_encoding(), and type_support_.

134 {
135  const OPENDDS_MAP(OPENDDS_STRING, Value)::const_iterator iter = cache_.find(field);
136  if (iter != cache_.end()) {
137  return iter->second;
138  }
140  Serializer ser(mb.get(), encoding_);
141  if (encoding_.is_encapsulated()) {
142  EncapsulationHeader encap;
143  if (!(ser >> encap)) {
144  ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR ")
145  ACE_TEXT("FilterEvaluator::SerializedForEval::lookup: ")
146  ACE_TEXT("deserialization of encapsulation header failed.\n")));
147  throw std::runtime_error("FilterEvaluator::SerializedForEval::lookup:"
148  "deserialization of encapsulation header failed.\n");
149  }
150  Encoding encoding;
151  if (!encap.to_encoding(encoding, exten_)) {
152  ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR ")
153  ACE_TEXT("FilterEvaluator::SerializedForEval::lookup: ")
154  ACE_TEXT("failed to convert encapsulation header to encoding.\n")));
155  throw std::runtime_error("FilterEvaluator::SerializedForEval::lookup:"
156  "failed to convert encapsulation header to encoding.\n");
157  }
158  ser.encoding(encoding);
159  }
160  const Value v = meta_.getValue(ser, field, &type_support_);
161  cache_.insert(std::make_pair(OPENDDS_STRING(field), v));
162  return v;
163 }
#define ACE_ERROR(X)
virtual Value getValue(const void *stru, const char *fieldSpec) const =0
#define OPENDDS_STRING
unique_ptr< ACE_Message_Block, Message_Block_Deleter > Message_Block_Ptr
static bool is_encapsulated(Kind kind)
Definition: Serializer.inl:139
virtual ACE_Message_Block * duplicate(void) const
ACE_TEXT("TCP_Factory")
any Value
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
int find(Container &c, const Key &key, typename Container::mapped_type *&value)
Definition: Util.h:71

◆ OPENDDS_MAP()

OpenDDS::DCPS::FilterEvaluator::SerializedForEval::OPENDDS_MAP ( OPENDDS_STRING  ,
Value   
)
mutable

Referenced by lookup().

Member Data Documentation

◆ encoding_

Encoding OpenDDS::DCPS::FilterEvaluator::SerializedForEval::encoding_

Definition at line 169 of file FilterEvaluator.h.

Referenced by lookup().

◆ exten_

Extensibility OpenDDS::DCPS::FilterEvaluator::SerializedForEval::exten_

Definition at line 172 of file FilterEvaluator.h.

Referenced by lookup().

◆ serialized_

ACE_Message_Block* OpenDDS::DCPS::FilterEvaluator::SerializedForEval::serialized_

Definition at line 168 of file FilterEvaluator.h.

Referenced by lookup().

◆ type_support_

const TypeSupportImpl& OpenDDS::DCPS::FilterEvaluator::SerializedForEval::type_support_

Definition at line 170 of file FilterEvaluator.h.

Referenced by lookup().


The documentation for this struct was generated from the following files: