#include <MultiTopicDataReader_T.h>
Inheritance diagram for OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >:
Definition at line 23 of file MultiTopicDataReader_T.h.
typedef TAO::DCPS::ZeroCopyDataSeq<Sample> OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::SampleSeq |
Definition at line 27 of file MultiTopicDataReader_T.h.
typedef std::vector<SampleWithInfo> OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::SampleVec [private] |
Definition at line 111 of file MultiTopicDataReader_T.h.
typedef std::set<OPENDDS_STRING> OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::TopicSet [private] |
Definition at line 112 of file MultiTopicDataReader_T.h.
OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T | ( | ) | [inline] |
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_fields | ( | void * | incoming, | |
Sample & | resulting, | |||
const QueryPlan & | qp, | |||
const MetaStruct & | meta | |||
) | [private] |
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_resulting_fields | ( | Sample & | target, | |
const Sample & | source, | |||
const TopicSet & | other_topics | |||
) | [private] |
Definition at line 58 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MetaStruct::assign(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::getResultingMeta(), and OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::projection_.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::combine().
00060 { 00061 using namespace std; 00062 const MetaStruct& meta = getResultingMeta(); 00063 for (TopicSet::const_iterator iterTopic = other_topics.begin(); 00064 iterTopic != other_topics.end(); ++iterTopic) { 00065 const QueryPlan& qp = query_plans_[*iterTopic]; 00066 const vector<SubjectFieldSpec>& proj = qp.projection_; 00067 typedef vector<SubjectFieldSpec>::const_iterator iter_t; 00068 for (iter_t iter = proj.begin(); iter != proj.end(); ++iter) { 00069 const SubjectFieldSpec& sfs = *iter; 00070 meta.assign(&target, sfs.resulting_name_.c_str(), 00071 &source, sfs.resulting_name_.c_str(), meta); 00072 } 00073 } 00074 }
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::combine | ( | SampleVec & | resulting, | |
const SampleVec & | other, | |||
const std::vector< OPENDDS_STRING > & | key_names, | |||
const TopicSet & | other_topics | |||
) | [private] |
Definition at line 151 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_resulting_fields(), OpenDDS::DCPS::MetaStruct::compare(), and OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::getResultingMeta().
00154 { 00155 const MetaStruct& meta = getResultingMeta(); 00156 SampleVec newData; 00157 for (typename SampleVec::iterator iterRes = resulting.begin(); 00158 iterRes != resulting.end(); /*incremented in loop*/) { 00159 bool foundOneMatch = false; 00160 for (typename SampleVec::const_iterator iterOther = other.begin(); 00161 iterOther != other.end(); ++iterOther) { 00162 bool match = true; 00163 for (size_t i = 0; match && i < key_names.size(); ++i) { 00164 if (!meta.compare(&*iterRes, &*iterOther, key_names[i].c_str())) { 00165 match = false; 00166 } 00167 } 00168 if (!match) { 00169 continue; 00170 } 00171 if (foundOneMatch) { 00172 newData.push_back(*iterRes); 00173 newData.back().combine(*iterOther); 00174 assign_resulting_fields(newData.back().sample_, 00175 iterOther->sample_, other_topics); 00176 } else { 00177 foundOneMatch = true; 00178 iterRes->combine(*iterOther); 00179 assign_resulting_fields(iterRes->sample_, 00180 iterOther->sample_, other_topics); 00181 } 00182 } 00183 if (foundOneMatch) { 00184 ++iterRes; 00185 } else { 00186 // no match found in 'other' so data must not appear in result set 00187 iterRes = resulting.erase(iterRes); 00188 } 00189 } 00190 resulting.insert(resulting.end(), newData.begin(), newData.end()); 00191 }
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::cross_join | ( | OPENDDS_MAP(TopicSet, SampleVec)& | partialResults, | |
const TopicSet & | seen, | |||
const QueryPlan & | qp | |||
) | [private] |
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::get_key_value | ( | Sample & | key_holder, | |
DDS::InstanceHandle_t | handle | |||
) |
Definition at line 470 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00472 { 00473 return typed_reader_->get_key_value(key_holder, handle); 00474 }
const MetaStruct & OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::getResultingMeta | ( | ) | [virtual] |
Implements OpenDDS::DCPS::MultiTopicDataReaderBase.
Definition at line 27 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_resulting_fields(), and OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::combine().
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::incoming_sample | ( | void * | sample, | |
const DDS::SampleInfo & | info, | |||
const char * | topic, | |||
const MetaStruct & | meta | |||
) | [virtual] |
Implements OpenDDS::DCPS::MultiTopicDataReaderBase.
Definition at line 284 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_fields(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::cross_join(), DDS::HANDLE_NIL, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::process_joins(), and OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00286 { 00287 using namespace std; 00288 using namespace DDS; 00289 const QueryPlan& qp = query_plans_[topic]; 00290 00291 // Track results of joins along multiple paths through the MultiTopic keys. 00292 std::map<TopicSet, SampleVec> partialResults; 00293 TopicSet seen; 00294 seen.insert(topic); 00295 partialResults[seen].push_back(SampleWithInfo(topic, info)); 00296 assign_fields(sample, partialResults[seen].back().sample_, qp, meta); 00297 00298 process_joins(partialResults, partialResults[seen], seen, qp); 00299 00300 // Any topic we haven't seen needs to be cross-joined 00301 for (std::map<OPENDDS_STRING, QueryPlan>::iterator iter = query_plans_.begin(); 00302 iter != query_plans_.end(); ++iter) { 00303 typename std::map<TopicSet, SampleVec>::iterator found = 00304 find_if(partialResults.begin(), partialResults.end(), 00305 Contains(iter->first)); 00306 if (found == partialResults.end()) { 00307 cross_join(partialResults, seen, iter->second); 00308 } 00309 } 00310 00311 TypedDataReader* tdr = dynamic_cast<TypedDataReader*>(typed_reader_.in()); 00312 for (typename std::map<TopicSet, SampleVec>::iterator iterPR = 00313 partialResults.begin(); iterPR != partialResults.end(); ++iterPR) { 00314 for (typename SampleVec::iterator i = iterPR->second.begin(); 00315 i != iterPR->second.end(); ++i) { 00316 InstanceHandle_t ih = tdr->store_synthetic_data(i->sample_, i->view_); 00317 if (ih != HANDLE_NIL) { 00318 typedef std::map<OPENDDS_STRING, InstanceHandle_t>::iterator mapiter_t; 00319 for (mapiter_t iterMap = i->info_.begin(); iterMap != i->info_.end(); 00320 ++iterMap) { 00321 query_plans_[iterMap->first].instances_.insert( 00322 make_pair(iterMap->second, ih)); 00323 } 00324 } 00325 } 00326 } 00327 }
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::init_typed | ( | DataReaderEx * | dr | ) | [virtual] |
Implements OpenDDS::DCPS::MultiTopicDataReaderBase.
Definition at line 20 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00021 { 00022 typed_reader_ = TypedDataReader::Interface::_narrow(dr); 00023 }
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::join | ( | SampleVec & | resulting, | |
const SampleWithInfo & | prototype, | |||
const std::vector< OPENDDS_STRING > & | key_names, | |||
const void * | key_data, | |||
DDS::DataReader_ptr | other_dr, | |||
const MetaStruct & | other_meta | |||
) | [private] |
Definition at line 78 of file MultiTopicDataReader_T.cpp.
References DDS::ALIVE_INSTANCE_STATE, DDS::ANY_VIEW_STATE, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_fields(), OpenDDS::DCPS::DataReaderImpl::get_topicdescription(), DDS::HANDLE_NIL, OpenDDS::DCPS::DataReaderImpl::lookup_instance_generic(), OpenDDS::DCPS::MetaStruct::numDcpsKeys(), OPENDDS_STRING, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::GenericData::ptr_, OpenDDS::DCPS::DataReaderImpl::read_instance_generic(), OpenDDS::DCPS::DataReaderImpl::read_next_instance_generic(), DDS::READ_SAMPLE_STATE, DDS::RETCODE_NO_DATA, and DDS::RETCODE_OK.
00082 { 00083 using namespace DDS; 00084 DataReaderImpl* other_dri = dynamic_cast<DataReaderImpl*>(other_dr); 00085 TopicDescription_var other_td = other_dri->get_topicdescription(); 00086 CORBA::String_var other_topic = other_td->get_name(); 00087 const QueryPlan& other_qp = query_plans_[other_topic.in()]; 00088 const size_t n_keys = key_names.size(); 00089 00090 if (n_keys > 0 && other_meta.numDcpsKeys() == n_keys) { // complete key 00091 InstanceHandle_t ih = other_dri->lookup_instance_generic(key_data); 00092 if (ih != HANDLE_NIL) { 00093 GenericData other_data(other_meta, false); 00094 SampleInfo info; 00095 ReturnCode_t ret = other_dri->read_instance_generic(other_data.ptr_, 00096 info, ih, READ_SAMPLE_STATE, ANY_VIEW_STATE, ALIVE_INSTANCE_STATE); 00097 if (ret != RETCODE_OK && ret != RETCODE_NO_DATA) { 00098 OPENDDS_STRING rc_ss; 00099 rc_ss.reserve(sizeof(ReturnCode_t)); 00100 rc_ss += ret; 00101 throw std::runtime_error("In join(), incoming DataReader for " + 00102 OPENDDS_STRING(other_topic) + " read_instance_generic, error #" + 00103 rc_ss); 00104 } else if (ret == DDS::RETCODE_OK) { 00105 resulting.push_back(prototype); 00106 resulting.back().combine(SampleWithInfo(other_topic.in(), info)); 00107 assign_fields(other_data.ptr_, resulting.back().sample_, 00108 other_qp, other_meta); 00109 } 00110 } 00111 } else { // incomplete key or cross-join (0 key fields) 00112 SampleVec new_resulting; 00113 ReturnCode_t ret = RETCODE_OK; 00114 for (InstanceHandle_t ih = HANDLE_NIL; ret != RETCODE_NO_DATA;) { 00115 GenericData other_data(other_meta, false); 00116 SampleInfo info; 00117 ret = other_dri->read_next_instance_generic(other_data.ptr_, info, ih, 00118 READ_SAMPLE_STATE, ANY_VIEW_STATE, ALIVE_INSTANCE_STATE); 00119 if (ret != RETCODE_OK && ret != RETCODE_NO_DATA) { 00120 OPENDDS_STRING rc_ss; 00121 rc_ss.reserve(sizeof(ReturnCode_t)); 00122 rc_ss += ret; 00123 throw std::runtime_error("In join(), incoming DataReader for " + 00124 OPENDDS_STRING(other_topic) + " read_next_instance_generic, error #" + 00125 rc_ss); 00126 } else if (ret == RETCODE_NO_DATA) { 00127 break; 00128 } 00129 ih = info.instance_handle; 00130 00131 bool match = true; 00132 for (size_t i = 0; match && i < key_names.size(); ++i) { 00133 if (!other_meta.compare(key_data, other_data.ptr_, 00134 key_names[i].c_str())) { 00135 match = false; 00136 } 00137 } 00138 00139 if (match) { 00140 resulting.push_back(prototype); 00141 resulting.back().combine(SampleWithInfo(other_topic.in(), info)); 00142 assign_fields(other_data.ptr_, resulting.back().sample_, 00143 other_qp, other_meta); 00144 } 00145 } 00146 } 00147 }
DDS::InstanceHandle_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::lookup_instance | ( | const Sample & | instance_data | ) |
Definition at line 478 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00480 { 00481 return typed_reader_->lookup_instance(instance_data); 00482 }
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::process_joins | ( | OPENDDS_MAP(TopicSet, SampleVec)& | partialResults, | |
SampleVec | starting, | |||
const TopicSet & | seen, | |||
const QueryPlan & | qp | |||
) | [private] |
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read | ( | SampleSeq & | received_data, | |
DDS::SampleInfoSeq & | info_seq, | |||
CORBA::Long | max_samples, | |||
DDS::SampleStateMask | sample_states, | |||
DDS::ViewStateMask | view_states, | |||
DDS::InstanceStateMask | instance_states | |||
) |
Definition at line 334 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00338 { 00339 return typed_reader_->read(received_data, info_seq, max_samples, 00340 sample_states, view_states, instance_states); 00341 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_instance | ( | SampleSeq & | received_data, | |
DDS::SampleInfoSeq & | info_seq, | |||
CORBA::Long | max_samples, | |||
DDS::InstanceHandle_t | a_handle, | |||
DDS::SampleStateMask | sample_states, | |||
DDS::ViewStateMask | view_states, | |||
DDS::InstanceStateMask | instance_states | |||
) |
Definition at line 392 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00397 { 00398 return typed_reader_->read_instance(received_data, info_seq, max_samples, 00399 a_handle, sample_states, view_states, instance_states); 00400 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_instance | ( | SampleSeq & | received_data, | |
DDS::SampleInfoSeq & | info_seq, | |||
CORBA::Long | max_samples, | |||
DDS::InstanceHandle_t | a_handle, | |||
DDS::SampleStateMask | sample_states, | |||
DDS::ViewStateMask | view_states, | |||
DDS::InstanceStateMask | instance_states | |||
) |
Definition at line 416 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00421 { 00422 return typed_reader_->read_next_instance(received_data, info_seq, max_samples, 00423 a_handle, sample_states, view_states, instance_states); 00424 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_instance_w_condition | ( | SampleSeq & | data_values, | |
DDS::SampleInfoSeq & | sample_infos, | |||
CORBA::Long | max_samples, | |||
DDS::InstanceHandle_t | previous_handle, | |||
DDS::ReadCondition_ptr | a_condition | |||
) |
Definition at line 440 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00444 { 00445 return typed_reader_->read_next_instance_w_condition(data_values, 00446 sample_infos, max_samples, previous_handle, a_condition); 00447 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_sample | ( | Sample & | received_data, | |
DDS::SampleInfo & | sample_info | |||
) |
Definition at line 376 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00378 { 00379 return typed_reader_->read_next_sample(received_data, sample_info); 00380 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_w_condition | ( | SampleSeq & | data_values, | |
DDS::SampleInfoSeq & | sample_infos, | |||
CORBA::Long | max_samples, | |||
DDS::ReadCondition_ptr | a_condition | |||
) |
Definition at line 356 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00359 { 00360 return typed_reader_->read_w_condition(data_values, sample_infos, 00361 max_samples, a_condition); 00362 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::return_loan | ( | SampleSeq & | received_data, | |
DDS::SampleInfoSeq & | info_seq | |||
) |
Definition at line 462 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00464 { 00465 return typed_reader_->return_loan(received_data, info_seq); 00466 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take | ( | SampleSeq & | received_data, | |
DDS::SampleInfoSeq & | info_seq, | |||
CORBA::Long | max_samples, | |||
DDS::SampleStateMask | sample_states, | |||
DDS::ViewStateMask | view_states, | |||
DDS::InstanceStateMask | instance_states | |||
) |
Definition at line 345 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00349 { 00350 return typed_reader_->take(received_data, info_seq, max_samples, 00351 sample_states, view_states, instance_states); 00352 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_instance | ( | SampleSeq & | received_data, | |
DDS::SampleInfoSeq & | info_seq, | |||
CORBA::Long | max_samples, | |||
DDS::InstanceHandle_t | a_handle, | |||
DDS::SampleStateMask | sample_states, | |||
DDS::ViewStateMask | view_states, | |||
DDS::InstanceStateMask | instance_states | |||
) |
Definition at line 404 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00409 { 00410 return typed_reader_->take_instance(received_data, info_seq, max_samples, 00411 a_handle, sample_states, view_states, instance_states); 00412 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_instance | ( | SampleSeq & | received_data, | |
DDS::SampleInfoSeq & | info_seq, | |||
CORBA::Long | max_samples, | |||
DDS::InstanceHandle_t | a_handle, | |||
DDS::SampleStateMask | sample_states, | |||
DDS::ViewStateMask | view_states, | |||
DDS::InstanceStateMask | instance_states | |||
) |
Definition at line 428 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00433 { 00434 return typed_reader_->take_next_instance(received_data, info_seq, max_samples, 00435 a_handle, sample_states, view_states, instance_states); 00436 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_instance_w_condition | ( | SampleSeq & | data_values, | |
DDS::SampleInfoSeq & | sample_infos, | |||
CORBA::Long | max_samples, | |||
DDS::InstanceHandle_t | previous_handle, | |||
DDS::ReadCondition_ptr | a_condition | |||
) |
Definition at line 451 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00455 { 00456 return typed_reader_->take_next_instance_w_condition(data_values, 00457 sample_infos, max_samples, previous_handle, a_condition); 00458 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_sample | ( | Sample & | received_data, | |
DDS::SampleInfo & | sample_info | |||
) |
Definition at line 384 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00386 { 00387 return typed_reader_->take_next_sample(received_data, sample_info); 00388 }
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_w_condition | ( | SampleSeq & | data_values, | |
DDS::SampleInfoSeq & | sample_infos, | |||
CORBA::Long | max_samples, | |||
DDS::ReadCondition_ptr | a_condition | |||
) |
Definition at line 366 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.
00369 { 00370 return typed_reader_->take_w_condition(data_values, sample_infos, 00371 max_samples, a_condition); 00372 }
TypedDataReader::Interface::_var_type OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_ [private] |
Definition at line 171 of file MultiTopicDataReader_T.h.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::get_key_value(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::incoming_sample(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::init_typed(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::lookup_instance(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_instance(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_instance(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_instance_w_condition(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_sample(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_w_condition(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::return_loan(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_instance(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_instance(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_instance_w_condition(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_sample(), and OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_w_condition().