OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader > Class Template Reference

#include <MultiTopicDataReader_T.h>

Inheritance diagram for OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >:

Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef TAO::DCPS::ZeroCopyDataSeq<
Sample > 
SampleSeq

Public Member Functions

 MultiTopicDataReader_T ()
void init_typed (DataReaderEx *dr)
const MetaStructgetResultingMeta ()
void incoming_sample (void *sample, const DDS::SampleInfo &info, const char *topic, const MetaStruct &meta)
DDS::ReturnCode_t read (SampleSeq &received_data, DDS::SampleInfoSeq &info_seq, CORBA::Long max_samples, DDS::SampleStateMask sample_states, DDS::ViewStateMask view_states, DDS::InstanceStateMask instance_states)
DDS::ReturnCode_t take (SampleSeq &received_data, DDS::SampleInfoSeq &info_seq, CORBA::Long max_samples, DDS::SampleStateMask sample_states, DDS::ViewStateMask view_states, DDS::InstanceStateMask instance_states)
DDS::ReturnCode_t read_w_condition (SampleSeq &data_values, DDS::SampleInfoSeq &sample_infos, CORBA::Long max_samples, DDS::ReadCondition_ptr a_condition)
DDS::ReturnCode_t take_w_condition (SampleSeq &data_values, DDS::SampleInfoSeq &sample_infos, CORBA::Long max_samples, DDS::ReadCondition_ptr a_condition)
DDS::ReturnCode_t read_next_sample (Sample &received_data, DDS::SampleInfo &sample_info)
DDS::ReturnCode_t take_next_sample (Sample &received_data, DDS::SampleInfo &sample_info)
DDS::ReturnCode_t 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)
DDS::ReturnCode_t 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)
DDS::ReturnCode_t 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)
DDS::ReturnCode_t 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)
DDS::ReturnCode_t 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)
DDS::ReturnCode_t 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)
DDS::ReturnCode_t return_loan (SampleSeq &received_data, DDS::SampleInfoSeq &info_seq)
DDS::ReturnCode_t get_key_value (Sample &key_holder, DDS::InstanceHandle_t handle)
DDS::InstanceHandle_t lookup_instance (const Sample &instance_data)

Private Types

typedef std::vector< SampleWithInfoSampleVec
typedef std::set< OPENDDS_STRING > TopicSet

Private Member Functions

void assign_fields (void *incoming, Sample &resulting, const QueryPlan &qp, const MetaStruct &meta)
void process_joins (OPENDDS_MAP(TopicSet, SampleVec)&partialResults, SampleVec starting, const TopicSet &seen, const QueryPlan &qp)
void 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)
void cross_join (OPENDDS_MAP(TopicSet, SampleVec)&partialResults, const TopicSet &seen, const QueryPlan &qp)
void combine (SampleVec &resulting, const SampleVec &other, const std::vector< OPENDDS_STRING > &key_names, const TopicSet &other_topics)
void assign_resulting_fields (Sample &target, const Sample &source, const TopicSet &other_topics)

Private Attributes

TypedDataReader::Interface::_var_type typed_reader_

Classes

struct  Contains
struct  GenericData
struct  SampleWithInfo

Detailed Description

template<typename Sample, typename TypedDataReader>
class OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >

Definition at line 23 of file MultiTopicDataReader_T.h.


Member Typedef Documentation

template<typename Sample, typename TypedDataReader>
typedef TAO::DCPS::ZeroCopyDataSeq<Sample> OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::SampleSeq

Definition at line 27 of file MultiTopicDataReader_T.h.

template<typename Sample, typename TypedDataReader>
typedef std::vector<SampleWithInfo> OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::SampleVec [private]

Definition at line 111 of file MultiTopicDataReader_T.h.

template<typename Sample, typename TypedDataReader>
typedef std::set<OPENDDS_STRING> OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::TopicSet [private]

Definition at line 112 of file MultiTopicDataReader_T.h.


Constructor & Destructor Documentation

template<typename Sample, typename TypedDataReader>
OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T (  )  [inline]

Definition at line 29 of file MultiTopicDataReader_T.h.

00029 {}


Member Function Documentation

template<typename Sample, typename TypedDataReader>
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_fields ( void *  incoming,
Sample &  resulting,
const QueryPlan &  qp,
const MetaStruct meta 
) [private]

Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::incoming_sample(), and OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::join().

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::cross_join ( OPENDDS_MAP(TopicSet, SampleVec)&  partialResults,
const TopicSet seen,
const QueryPlan &  qp 
) [private]

Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::incoming_sample().

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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().

00028 {
00029   return getMetaStruct<Sample>();
00030 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::process_joins ( OPENDDS_MAP(TopicSet, SampleVec)&  partialResults,
SampleVec  starting,
const TopicSet seen,
const QueryPlan &  qp 
) [private]

Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::incoming_sample().

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }

template<typename Sample, typename TypedDataReader>
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 }


Member Data Documentation

template<typename Sample, typename TypedDataReader>
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().


The documentation for this class was generated from the following files:
Generated on Fri Feb 12 20:06:20 2016 for OpenDDS by  doxygen 1.4.7