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.

Classes

struct  Contains
struct  GenericData
struct  SampleWithInfo

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_instance_w_condition (SampleSeq &data_values, DDS::SampleInfoSeq &sample_infos, CORBA::Long max_samples, DDS::InstanceHandle_t handle, DDS::ReadCondition_ptr a_condition)
DDS::ReturnCode_t take_instance_w_condition (SampleSeq &data_values, DDS::SampleInfoSeq &sample_infos, CORBA::Long max_samples, DDS::InstanceHandle_t handle, DDS::ReadCondition_ptr a_condition)
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
< SampleWithInfo
SampleVec
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_

Detailed Description

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

Definition at line 25 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 29 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 121 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 122 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 31 of file MultiTopicDataReader_T.h.

00031 {}


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 
) [inline, private]

Definition at line 38 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MetaStruct::assign(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::getResultingMeta(), OpenDDS::DCPS::MultiTopicImpl::SubjectFieldSpec::incoming_name_, OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::keys_projected_out_, OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::projection_, and OpenDDS::DCPS::MultiTopicImpl::SubjectFieldSpec::resulting_name_.

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

00041 {
00042   using namespace std;
00043   const vector<SubjectFieldSpec>& proj = qp.projection_;
00044   const MetaStruct& resulting_meta = getResultingMeta();
00045   typedef vector<SubjectFieldSpec>::const_iterator iter_t;
00046   for (iter_t iter = proj.begin(); iter != proj.end(); ++iter) {
00047     const SubjectFieldSpec& sfs = *iter;
00048     resulting_meta.assign(&resulting, sfs.resulting_name_.c_str(),
00049                           incoming, sfs.incoming_name_.c_str(), meta);
00050   }
00051 
00052   const vector<OPENDDS_STRING>& proj_out = qp.keys_projected_out_;
00053   for (vector<OPENDDS_STRING>::const_iterator iter = proj_out.begin();
00054        iter != proj_out.end(); ++iter) {
00055     resulting_meta.assign(&resulting, iter->c_str(),
00056                           incoming, iter->c_str(), meta);
00057   }
00058 }

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename Sample , typename TypedDataReader >
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_resulting_fields ( Sample &  target,
const Sample &  source,
const TopicSet other_topics 
) [inline, private]

Definition at line 62 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MetaStruct::assign(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::getResultingMeta(), OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::projection_, and OpenDDS::DCPS::MultiTopicImpl::SubjectFieldSpec::resulting_name_.

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

00064 {
00065   using namespace std;
00066   const MetaStruct& meta = getResultingMeta();
00067   for (TopicSet::const_iterator iterTopic = other_topics.begin();
00068        iterTopic != other_topics.end(); ++iterTopic) {
00069     const QueryPlan& qp = query_plans_[*iterTopic];
00070     const vector<SubjectFieldSpec>& proj = qp.projection_;
00071     typedef vector<SubjectFieldSpec>::const_iterator iter_t;
00072     for (iter_t iter = proj.begin(); iter != proj.end(); ++iter) {
00073       const SubjectFieldSpec& sfs = *iter;
00074       meta.assign(&target, sfs.resulting_name_.c_str(),
00075                   &source, sfs.resulting_name_.c_str(), meta);
00076     }
00077   }
00078 }

Here is the call graph for this function:

Here is the caller graph for this function:

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 
) [inline, private]

Definition at line 162 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().

00165 {
00166   const MetaStruct& meta = getResultingMeta();
00167   SampleVec newData;
00168   for (typename SampleVec::iterator iterRes = resulting.begin();
00169        iterRes != resulting.end(); /*incremented in loop*/) {
00170     bool foundOneMatch = false;
00171     for (typename SampleVec::const_iterator iterOther = other.begin();
00172          iterOther != other.end(); ++iterOther) {
00173       bool match = true;
00174       for (size_t i = 0; match && i < key_names.size(); ++i) {
00175         if (!meta.compare(&*iterRes, &*iterOther, key_names[i].c_str())) {
00176           match = false;
00177         }
00178       }
00179       if (!match) {
00180         continue;
00181       }
00182       if (foundOneMatch) {
00183         newData.push_back(*iterRes);
00184         newData.back().combine(*iterOther);
00185         assign_resulting_fields(newData.back().sample_,
00186                                 iterOther->sample_, other_topics);
00187       } else {
00188         foundOneMatch = true;
00189         iterRes->combine(*iterOther);
00190         assign_resulting_fields(iterRes->sample_,
00191                                 iterOther->sample_, other_topics);
00192       }
00193     }
00194     if (foundOneMatch) {
00195       ++iterRes;
00196     } else {
00197       // no match found in 'other' so data must not appear in result set
00198       iterRes = resulting.erase(iterRes);
00199     }
00200   }
00201   resulting.insert(resulting.end(), newData.begin(), newData.end());
00202 }

Here is the call graph for this function:

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().

Here is the caller graph for this function:

template<typename Sample , typename TypedDataReader >
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::get_key_value ( Sample &  key_holder,
DDS::InstanceHandle_t  handle 
) [inline]

Definition at line 524 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00526 {
00527   return typed_reader_->get_key_value(key_holder, handle);
00528 }

template<typename Sample , typename TypedDataReader >
const MetaStruct & OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::getResultingMeta (  )  [inline, virtual]
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 
) [inline, virtual]

Implements OpenDDS::DCPS::MultiTopicDataReaderBase.

Definition at line 307 of file MultiTopicDataReader_T.cpp.

References ACE_TEXT(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_fields(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::cross_join(), DDS::HANDLE_NIL, LM_ERROR, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::process_joins(), and OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00309 {
00310   using namespace std;
00311   using namespace DDS;
00312   const QueryPlan& qp = query_plans_[topic];
00313 
00314   // Track results of joins along multiple paths through the MultiTopic keys.
00315   std::map<TopicSet, SampleVec> partialResults;
00316   TopicSet seen;
00317   seen.insert(topic);
00318   partialResults[seen].push_back(SampleWithInfo(topic, info));
00319   assign_fields(sample, partialResults[seen].back().sample_, qp, meta);
00320 
00321   process_joins(partialResults, partialResults[seen], seen, qp);
00322 
00323   // Any topic we haven't seen needs to be cross-joined
00324   for (std::map<OPENDDS_STRING, QueryPlan>::iterator iter = query_plans_.begin();
00325        iter != query_plans_.end(); ++iter) {
00326     typename std::map<TopicSet, SampleVec>::iterator found =
00327       find_if(partialResults.begin(), partialResults.end(),
00328               Contains(iter->first));
00329     if (found == partialResults.end()) {
00330       cross_join(partialResults, seen, iter->second);
00331     }
00332   }
00333 
00334   TypedDataReader* tdr = dynamic_cast<TypedDataReader*>(typed_reader_.in());
00335 
00336   if (!tdr) {
00337     ACE_ERROR((LM_ERROR,
00338       ACE_TEXT("(%P|%t) ERROR: ")
00339       ACE_TEXT("MultiTopicDataReader_T::incoming_sample, ")
00340       ACE_TEXT("Failed to get TypedDataReader.\n")));
00341     return;
00342   }
00343 
00344   for (typename std::map<TopicSet, SampleVec>::iterator iterPR =
00345        partialResults.begin(); iterPR != partialResults.end(); ++iterPR) {
00346     for (typename SampleVec::iterator i = iterPR->second.begin();
00347          i != iterPR->second.end(); ++i) {
00348       InstanceHandle_t ih = tdr->store_synthetic_data(i->sample_, i->view_);
00349       if (ih != HANDLE_NIL) {
00350         typedef std::map<OPENDDS_STRING, InstanceHandle_t>::iterator mapiter_t;
00351         for (mapiter_t iterMap = i->info_.begin(); iterMap != i->info_.end();
00352              ++iterMap) {
00353           query_plans_[iterMap->first].instances_.insert(
00354             make_pair(iterMap->second, ih));
00355         }
00356       }
00357     }
00358   }
00359 }

Here is the call graph for this function:

template<typename Sample , typename TypedDataReader >
void OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::init_typed ( DataReaderEx dr  )  [inline, virtual]
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 
) [inline, private]

Definition at line 82 of file MultiTopicDataReader_T.cpp.

References ACE_TEXT(), DDS::ALIVE_INSTANCE_STATE, DDS::ANY_VIEW_STATE, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::assign_fields(), OpenDDS::DCPS::MetaStruct::compare(), OpenDDS::DCPS::DataReaderImpl::get_topicdescription(), DDS::HANDLE_NIL, LM_ERROR, 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.

00086 {
00087   using namespace DDS;
00088   DataReaderImpl* other_dri = dynamic_cast<DataReaderImpl*>(other_dr);
00089 
00090   if (!other_dri) {
00091     ACE_ERROR((LM_ERROR,
00092       ACE_TEXT("(%P|%t) ERROR: ")
00093       ACE_TEXT("MultiTopicDataReader_T::join, ")
00094       ACE_TEXT("Failed to get DataReaderImpl.\n")));
00095     return;
00096   }
00097 
00098   TopicDescription_var other_td = other_dri->get_topicdescription();
00099   CORBA::String_var other_topic = other_td->get_name();
00100   const QueryPlan& other_qp = query_plans_[other_topic.in()];
00101   const size_t n_keys = key_names.size();
00102 
00103   if (n_keys > 0 && other_meta.numDcpsKeys() == n_keys) { // complete key
00104     InstanceHandle_t ih = other_dri->lookup_instance_generic(key_data);
00105     if (ih != HANDLE_NIL) {
00106       GenericData other_data(other_meta, false);
00107       SampleInfo info;
00108       ReturnCode_t ret = other_dri->read_instance_generic(other_data.ptr_,
00109         info, ih, READ_SAMPLE_STATE, ANY_VIEW_STATE, ALIVE_INSTANCE_STATE);
00110       if (ret != RETCODE_OK && ret != RETCODE_NO_DATA) {
00111         std::ostringstream rc_ss;
00112         rc_ss << ret;
00113         throw std::runtime_error("In join(), incoming DataReader for " +
00114           OPENDDS_STRING(other_topic) + " read_instance_generic, error #" +
00115           rc_ss.str());
00116       } else if (ret == DDS::RETCODE_OK) {
00117         resulting.push_back(prototype);
00118         resulting.back().combine(SampleWithInfo(other_topic.in(), info));
00119         assign_fields(other_data.ptr_, resulting.back().sample_,
00120                       other_qp, other_meta);
00121       }
00122     }
00123   } else { // incomplete key or cross-join (0 key fields)
00124     SampleVec new_resulting;
00125     ReturnCode_t ret = RETCODE_OK;
00126     for (InstanceHandle_t ih = HANDLE_NIL; ret != RETCODE_NO_DATA;) {
00127       GenericData other_data(other_meta, false);
00128       SampleInfo info;
00129       ret = other_dri->read_next_instance_generic(other_data.ptr_, info, ih,
00130         READ_SAMPLE_STATE, ANY_VIEW_STATE, ALIVE_INSTANCE_STATE);
00131       if (ret != RETCODE_OK && ret != RETCODE_NO_DATA) {
00132         std::ostringstream rc_ss;
00133         rc_ss << ret;
00134         throw std::runtime_error("In join(), incoming DataReader for " +
00135           OPENDDS_STRING(other_topic) + " read_next_instance_generic, error #" +
00136           rc_ss.str());
00137       } else if (ret == RETCODE_NO_DATA) {
00138         break;
00139       }
00140       ih = info.instance_handle;
00141 
00142       bool match = true;
00143       for (size_t i = 0; match && i < key_names.size(); ++i) {
00144         if (!other_meta.compare(key_data, other_data.ptr_,
00145                                 key_names[i].c_str())) {
00146           match = false;
00147         }
00148       }
00149 
00150       if (match) {
00151         resulting.push_back(prototype);
00152         resulting.back().combine(SampleWithInfo(other_topic.in(), info));
00153         assign_fields(other_data.ptr_, resulting.back().sample_,
00154                       other_qp, other_meta);
00155       }
00156     }
00157   }
00158 }

Here is the call graph for this function:

template<typename Sample , typename TypedDataReader >
DDS::InstanceHandle_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::lookup_instance ( const Sample &  instance_data  )  [inline]

Definition at line 532 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00534 {
00535   return typed_reader_->lookup_instance(instance_data);
00536 }

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().

Here is the caller graph for this function:

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 
) [inline]
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 
) [inline]

Definition at line 424 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00429 {
00430   return typed_reader_->read_instance(received_data, info_seq, max_samples,
00431     a_handle, sample_states, view_states, instance_states);
00432 }

template<typename Sample , typename TypedDataReader >
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_instance_w_condition ( SampleSeq data_values,
DDS::SampleInfoSeq sample_infos,
CORBA::Long  max_samples,
DDS::InstanceHandle_t  handle,
DDS::ReadCondition_ptr  a_condition 
) [inline]

Definition at line 448 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00452 {
00453   return typed_reader_->read_instance_w_condition(data_values,
00454     sample_infos, max_samples, handle, a_condition);
00455 }

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 
) [inline]

Definition at line 470 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00475 {
00476   return typed_reader_->read_next_instance(received_data, info_seq, max_samples,
00477     a_handle, sample_states, view_states, instance_states);
00478 }

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 
) [inline]

Definition at line 494 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00498 {
00499   return typed_reader_->read_next_instance_w_condition(data_values,
00500     sample_infos, max_samples, previous_handle, a_condition);
00501 }

template<typename Sample , typename TypedDataReader >
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_sample ( Sample &  received_data,
DDS::SampleInfo sample_info 
) [inline]

Definition at line 408 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00410 {
00411   return typed_reader_->read_next_sample(received_data, sample_info);
00412 }

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 
) [inline]

Definition at line 388 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00391 {
00392   return typed_reader_->read_w_condition(data_values, sample_infos,
00393     max_samples, a_condition);
00394 }

template<typename Sample , typename TypedDataReader >
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::return_loan ( SampleSeq received_data,
DDS::SampleInfoSeq info_seq 
) [inline]

Definition at line 516 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00518 {
00519   return typed_reader_->return_loan(received_data, info_seq);
00520 }

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 
) [inline]
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 
) [inline]

Definition at line 436 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00441 {
00442   return typed_reader_->take_instance(received_data, info_seq, max_samples,
00443     a_handle, sample_states, view_states, instance_states);
00444 }

template<typename Sample , typename TypedDataReader >
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_instance_w_condition ( SampleSeq data_values,
DDS::SampleInfoSeq sample_infos,
CORBA::Long  max_samples,
DDS::InstanceHandle_t  handle,
DDS::ReadCondition_ptr  a_condition 
) [inline]

Definition at line 459 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00463 {
00464   return typed_reader_->take_instance_w_condition(data_values,
00465     sample_infos, max_samples, handle, a_condition);
00466 }

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 
) [inline]

Definition at line 482 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00487 {
00488   return typed_reader_->take_next_instance(received_data, info_seq, max_samples,
00489     a_handle, sample_states, view_states, instance_states);
00490 }

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 
) [inline]

Definition at line 505 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00509 {
00510   return typed_reader_->take_next_instance_w_condition(data_values,
00511     sample_infos, max_samples, previous_handle, a_condition);
00512 }

template<typename Sample , typename TypedDataReader >
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_sample ( Sample &  received_data,
DDS::SampleInfo sample_info 
) [inline]

Definition at line 416 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00418 {
00419   return typed_reader_->take_next_sample(received_data, sample_info);
00420 }

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 
) [inline]

Definition at line 398 of file MultiTopicDataReader_T.cpp.

References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_.

00401 {
00402   return typed_reader_->take_w_condition(data_values, sample_infos,
00403     max_samples, a_condition);
00404 }


Member Data Documentation

template<typename Sample , typename TypedDataReader >
TypedDataReader::Interface::_var_type OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::typed_reader_ [private]

Definition at line 181 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_instance_w_condition(), 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_instance_w_condition(), 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:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1