OpenDDS::DCPS::MultiTopicDataReaderBase Class Reference

#include <MultiTopicDataReaderBase.h>

Inheritance diagram for OpenDDS::DCPS::MultiTopicDataReaderBase:

Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::MultiTopicDataReaderBase:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 MultiTopicDataReaderBase ()
void init (const DDS::DataReaderQos &dr_qos, DDS::DataReaderListener_ptr a_listener, DDS::StatusMask mask, SubscriberImpl *parent, MultiTopicImpl *multitopic)
void data_available (DDS::DataReader_ptr reader)
void set_status_changed_flag (DDS::StatusKind status, bool flag)
bool have_sample_states (DDS::SampleStateMask sample_states) const
void cleanup ()
DDS::InstanceHandle_t get_instance_handle ()
DDS::ReturnCode_t enable ()
DDS::StatusCondition_ptr get_statuscondition ()
DDS::StatusMask get_status_changes ()
DDS::ReadCondition_ptr create_readcondition (DDS::SampleStateMask sample_states, DDS::ViewStateMask view_states, DDS::InstanceStateMask instance_states)
DDS::QueryCondition_ptr create_querycondition (DDS::SampleStateMask sample_states, DDS::ViewStateMask view_states, DDS::InstanceStateMask instance_states, const char *query_expression, const DDS::StringSeq &query_parameters)
DDS::ReturnCode_t delete_readcondition (DDS::ReadCondition_ptr a_condition)
DDS::ReturnCode_t delete_contained_entities ()
DDS::ReturnCode_t set_qos (const DDS::DataReaderQos &qos)
DDS::ReturnCode_t get_qos (DDS::DataReaderQos &qos)
DDS::ReturnCode_t set_listener (DDS::DataReaderListener_ptr a_listener, DDS::StatusMask mask)
DDS::DataReaderListener_ptr get_listener ()
DDS::TopicDescription_ptr get_topicdescription ()
DDS::Subscriber_ptr get_subscriber ()
DDS::ReturnCode_t get_sample_rejected_status (DDS::SampleRejectedStatus &status)
DDS::ReturnCode_t get_liveliness_changed_status (DDS::LivelinessChangedStatus &status)
DDS::ReturnCode_t get_requested_deadline_missed_status (DDS::RequestedDeadlineMissedStatus &status)
DDS::ReturnCode_t get_requested_incompatible_qos_status (DDS::RequestedIncompatibleQosStatus &status)
DDS::ReturnCode_t get_subscription_matched_status (DDS::SubscriptionMatchedStatus &status)
DDS::ReturnCode_t get_sample_lost_status (DDS::SampleLostStatus &status)
DDS::ReturnCode_t wait_for_historical_data (const DDS::Duration_t &max_wait)
DDS::ReturnCode_t get_matched_publications (DDS::InstanceHandleSeq &publication_handles)
DDS::ReturnCode_t get_matched_publication_data (DDS::PublicationBuiltinTopicData &publication_data, DDS::InstanceHandle_t publication_handle)
void get_latency_stats (LatencyStatisticsSeq &stats)
void reset_latency_stats ()
CORBA::Boolean statistics_enabled ()
void statistics_enabled (CORBA::Boolean statistics_enabled)

Protected Types

typedef MultiTopicImpl::SubjectFieldSpec SubjectFieldSpec

Protected Member Functions

OPENDDS_STRING topicNameFor (DDS::DataReader_ptr dr)
const MetaStructmetaStructFor (DDS::DataReader_ptr dr)
 OPENDDS_MAP (OPENDDS_STRING, QueryPlan) query_plans_

Private Member Functions

virtual void init_typed (DataReaderEx *dr)=0
virtual const MetaStructgetResultingMeta ()=0
virtual void incoming_sample (void *sample, const DDS::SampleInfo &info, const char *topic, const MetaStruct &meta)=0

Private Attributes

DDS::DataReaderListener_var listener_
DataReaderEx_var resulting_reader_

Classes

class  Listener
struct  QueryPlan

Detailed Description

Definition at line 25 of file MultiTopicDataReaderBase.h.


Member Typedef Documentation

typedef MultiTopicImpl::SubjectFieldSpec OpenDDS::DCPS::MultiTopicDataReaderBase::SubjectFieldSpec [protected]

Definition at line 165 of file MultiTopicDataReaderBase.h.


Constructor & Destructor Documentation

OpenDDS::DCPS::MultiTopicDataReaderBase::MultiTopicDataReaderBase (  )  [inline]

Definition at line 28 of file MultiTopicDataReaderBase.h.

00028 {}


Member Function Documentation

void OpenDDS::DCPS::MultiTopicDataReaderBase::cleanup (  ) 

Definition at line 256 of file MultiTopicDataReaderBase.cpp.

References OpenDDS::DCPS::DataReaderImpl::cleanup(), and resulting_reader_.

00257 {
00258   DDS::Subscriber_var sub = resulting_reader_->get_subscriber();
00259   for (std::map<OPENDDS_STRING, QueryPlan>::iterator it = query_plans_.begin();
00260        it != query_plans_.end(); ++it) {
00261     sub->delete_datareader(it->second.data_reader_);
00262   }
00263   DataReaderImpl* dri = dynamic_cast<DataReaderImpl*>(resulting_reader_.in());
00264   SubscriberImpl* si = dynamic_cast<SubscriberImpl*>(sub.in());
00265   si->remove_from_datareader_set(dri);
00266   dri->cleanup();
00267 }

DDS::QueryCondition_ptr OpenDDS::DCPS::MultiTopicDataReaderBase::create_querycondition ( DDS::SampleStateMask  sample_states,
DDS::ViewStateMask  view_states,
DDS::InstanceStateMask  instance_states,
const char *  query_expression,
const DDS::StringSeq query_parameters 
)

Definition at line 298 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00302 {
00303   return resulting_reader_->create_querycondition(sample_states, view_states,
00304     instance_states, query_expression, query_parameters);
00305 }

DDS::ReadCondition_ptr OpenDDS::DCPS::MultiTopicDataReaderBase::create_readcondition ( DDS::SampleStateMask  sample_states,
DDS::ViewStateMask  view_states,
DDS::InstanceStateMask  instance_states 
)

Definition at line 289 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00292 {
00293   return resulting_reader_->create_readcondition(sample_states, view_states,
00294     instance_states);
00295 }

void OpenDDS::DCPS::MultiTopicDataReaderBase::data_available ( DDS::DataReader_ptr  reader  ) 

Definition at line 161 of file MultiTopicDataReaderBase.cpp.

References DDS::ALIVE_INSTANCE_STATE, DDS::ANY_INSTANCE_STATE, DDS::ANY_VIEW_STATE, incoming_sample(), OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::instances_, metaStructFor(), DDS::NOT_READ_SAMPLE_STATE, OPENDDS_STRING, OpenDDS::DCPS::DataReaderImpl::read_generic(), resulting_reader_, DDS::RETCODE_NO_DATA, DDS::RETCODE_OK, OpenDDS::DCPS::DataReaderImpl::set_instance_state(), OpenDDS::DCPS::to_dds_string(), and topicNameFor().

Referenced by OpenDDS::DCPS::MultiTopicDataReaderBase::Listener::on_data_available().

00162 {
00163   using namespace std;
00164   using namespace DDS;
00165 
00166   const OPENDDS_STRING topic = topicNameFor(reader);
00167   DataReaderImpl* dri = dynamic_cast<DataReaderImpl*>(reader);
00168   DataReaderImpl::GenericBundle gen;
00169   ReturnCode_t rc = dri->read_generic(gen, NOT_READ_SAMPLE_STATE,
00170                                       ANY_VIEW_STATE, ANY_INSTANCE_STATE,false);
00171   if (rc == RETCODE_NO_DATA) {
00172     return;
00173   } else if (rc != RETCODE_OK) {
00174     throw runtime_error("Incoming DataReader for " + topic +
00175       " could not be read, error #" + to_dds_string(rc));
00176   }
00177 
00178   const MetaStruct& meta = metaStructFor(reader);
00179   const QueryPlan& qp = query_plans_[topic];
00180   for (CORBA::ULong i = 0; i < gen.samples_.size(); ++i) {
00181     if (gen.info_[i].valid_data) {
00182       incoming_sample(gen.samples_[i], gen.info_[i], topic.c_str(), meta);
00183     } else if (gen.info_[i].instance_state != ALIVE_INSTANCE_STATE) {
00184       DataReaderImpl* resulting_impl =
00185         dynamic_cast<DataReaderImpl*>(resulting_reader_.in());
00186       set<pair<InstanceHandle_t, InstanceHandle_t> >::const_iterator
00187         iter = qp.instances_.begin();
00188       while (iter != qp.instances_.end() &&
00189              iter->first != gen.info_[i].instance_handle) ++iter;
00190       for (; iter != qp.instances_.end() &&
00191            iter->first == gen.info_[i].instance_handle; ++iter) {
00192         resulting_impl->set_instance_state(iter->second,
00193                                            gen.info_[i].instance_state);
00194       }
00195     }
00196   }
00197 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::delete_contained_entities (  ) 

Definition at line 314 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00315 {
00316   return resulting_reader_->delete_contained_entities();
00317 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::delete_readcondition ( DDS::ReadCondition_ptr  a_condition  ) 

Definition at line 308 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00310 {
00311   return resulting_reader_->delete_readcondition(a_condition);
00312 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::enable (  ) 

Definition at line 274 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00275 {
00276   return resulting_reader_->enable();
00277 }

DDS::InstanceHandle_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_instance_handle (  ) 

Definition at line 269 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00270 {
00271   return resulting_reader_->get_instance_handle();
00272 }

void OpenDDS::DCPS::MultiTopicDataReaderBase::get_latency_stats ( LatencyStatisticsSeq stats  ) 

Definition at line 409 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00410 {
00411   resulting_reader_->get_latency_stats(stats);
00412 }

DDS::DataReaderListener_ptr OpenDDS::DCPS::MultiTopicDataReaderBase::get_listener (  ) 

Definition at line 336 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00337 {
00338   return resulting_reader_->get_listener();
00339 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_liveliness_changed_status ( DDS::LivelinessChangedStatus status  ) 

Definition at line 357 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00359 {
00360   return resulting_reader_->get_liveliness_changed_status(status);
00361 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_matched_publication_data ( DDS::PublicationBuiltinTopicData publication_data,
DDS::InstanceHandle_t  publication_handle 
)

Definition at line 400 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00403 {
00404   return resulting_reader_->get_matched_publication_data(publication_data,
00405     publication_handle);
00406 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_matched_publications ( DDS::InstanceHandleSeq publication_handles  ) 

Definition at line 393 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00395 {
00396   return resulting_reader_->get_matched_publications(publication_handles);
00397 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_qos ( DDS::DataReaderQos qos  ) 

Definition at line 325 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00326 {
00327   return resulting_reader_->get_qos(qos);
00328 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_requested_deadline_missed_status ( DDS::RequestedDeadlineMissedStatus status  ) 

Definition at line 363 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00365 {
00366   return resulting_reader_->get_requested_deadline_missed_status(status);
00367 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_requested_incompatible_qos_status ( DDS::RequestedIncompatibleQosStatus status  ) 

Definition at line 369 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00371 {
00372   return resulting_reader_->get_requested_incompatible_qos_status(status);
00373 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_sample_lost_status ( DDS::SampleLostStatus status  ) 

Definition at line 381 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00383 {
00384   return resulting_reader_->get_sample_lost_status(status);
00385 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_sample_rejected_status ( DDS::SampleRejectedStatus status  ) 

Definition at line 351 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00353 {
00354   return resulting_reader_->get_sample_rejected_status(status);
00355 }

DDS::StatusMask OpenDDS::DCPS::MultiTopicDataReaderBase::get_status_changes (  ) 

Definition at line 284 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00285 {
00286   return resulting_reader_->get_status_changes();
00287 }

DDS::StatusCondition_ptr OpenDDS::DCPS::MultiTopicDataReaderBase::get_statuscondition (  ) 

Definition at line 279 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00280 {
00281   return resulting_reader_->get_statuscondition();
00282 }

DDS::Subscriber_ptr OpenDDS::DCPS::MultiTopicDataReaderBase::get_subscriber (  ) 

Definition at line 346 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00347 {
00348   return resulting_reader_->get_subscriber();
00349 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::get_subscription_matched_status ( DDS::SubscriptionMatchedStatus status  ) 

Definition at line 375 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00377 {
00378   return resulting_reader_->get_subscription_matched_status(status);
00379 }

DDS::TopicDescription_ptr OpenDDS::DCPS::MultiTopicDataReaderBase::get_topicdescription (  ) 

Definition at line 341 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00342 {
00343   return resulting_reader_->get_topicdescription();
00344 }

virtual const MetaStruct& OpenDDS::DCPS::MultiTopicDataReaderBase::getResultingMeta (  )  [private, pure virtual]

Implemented in OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >.

Referenced by init().

bool OpenDDS::DCPS::MultiTopicDataReaderBase::have_sample_states ( DDS::SampleStateMask  sample_states  )  const

Definition at line 249 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00251 {
00252   return dynamic_cast<DataReaderImpl*>(resulting_reader_.in())
00253     ->have_sample_states(sample_states);
00254 }

virtual void OpenDDS::DCPS::MultiTopicDataReaderBase::incoming_sample ( void *  sample,
const DDS::SampleInfo info,
const char *  topic,
const MetaStruct meta 
) [private, pure virtual]

Implemented in OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >.

Referenced by data_available().

void OpenDDS::DCPS::MultiTopicDataReaderBase::init ( const DDS::DataReaderQos dr_qos,
DDS::DataReaderListener_ptr  a_listener,
DDS::StatusMask  mask,
SubscriberImpl parent,
MultiTopicImpl multitopic 
)

Definition at line 33 of file MultiTopicDataReaderBase.cpp.

References OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::adjacent_joins_, OpenDDS::DCPS::ALL_STATUS_MASK, OpenDDS::DCPS::SubscriberImpl::create_datareader(), OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::data_reader_, OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::MultiTopicImpl::get_aggregation(), OpenDDS::DCPS::SubscriberImpl::get_participant(), OpenDDS::DCPS::MultiTopicImpl::get_selection(), OpenDDS::DCPS::TopicDescriptionImpl::get_type_support(), OpenDDS::DCPS::MetaStruct::getFieldNames(), getResultingMeta(), OpenDDS::DCPS::DataReaderImpl::init(), init_typed(), OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::keys_projected_out_, listener_, metaStructFor(), OPENDDS_STRING, OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::projection_, OpenDDS::DCPS::SubscriberImpl::raw_latency_buffer_size(), OpenDDS::DCPS::DataReaderImpl::raw_latency_buffer_size(), OpenDDS::DCPS::SubscriberImpl::raw_latency_buffer_type(), OpenDDS::DCPS::DataReaderImpl::raw_latency_buffer_type(), and resulting_reader_.

Referenced by OpenDDS::DCPS::SubscriberImpl::create_datareader().

00036 {
00037   using namespace std;
00038   DDS::DataReader_var dr = multitopic->get_type_support()->create_datareader();
00039   resulting_reader_ = DataReaderEx::_narrow(dr);
00040   DataReaderImpl* resulting_impl =
00041     dynamic_cast<DataReaderImpl*>(resulting_reader_.in());
00042 
00043   resulting_impl->raw_latency_buffer_size() = parent->raw_latency_buffer_size();
00044   resulting_impl->raw_latency_buffer_type() = parent->raw_latency_buffer_type();
00045 
00046   DDS::DomainParticipant_var participant = parent->get_participant();
00047   resulting_impl->init(multitopic, dr_qos, a_listener, mask,
00048     dynamic_cast<DomainParticipantImpl*>(participant.in()), parent,
00049     resulting_reader_);
00050 
00051   init_typed(resulting_reader_);
00052   listener_ = new Listener(this);
00053 
00054   std::map<OPENDDS_STRING, OPENDDS_STRING> fieldToTopic;
00055 
00056   // key: name of field that's a key for the 'join'
00057   // mapped: set of topicNames that have this key in common
00058   std::map<OPENDDS_STRING, set<OPENDDS_STRING> > joinKeys;
00059 
00060   const vector<OPENDDS_STRING>& selection = multitopic->get_selection();
00061   for (size_t i = 0; i < selection.size(); ++i) {
00062 
00063     const DDS::Duration_t no_wait = {0, 0};
00064     DDS::Topic_var t = participant->find_topic(selection[i].c_str(), no_wait);
00065     if (!t.in()) {
00066       throw runtime_error("Topic: " + selection[i] + " not found.");
00067     }
00068 
00069     DDS::DataReader_var incoming =
00070       parent->create_datareader(t, dr_qos, listener_, ALL_STATUS_MASK);
00071     if (!incoming.in()) {
00072       throw runtime_error("Could not create incoming DataReader "
00073         + selection[i]);
00074     }
00075 
00076     QueryPlan& qp = query_plans_[selection[i]];
00077     qp.data_reader_ = incoming;
00078     const MetaStruct& meta = metaStructFor(incoming);
00079 
00080     for (const char** names = meta.getFieldNames(); *names; ++names) {
00081       if (fieldToTopic.count(*names)) { // already seen this field name
00082         set<OPENDDS_STRING>& topics = joinKeys[*names];
00083         topics.insert(fieldToTopic[*names]);
00084         topics.insert(selection[i]);
00085       } else {
00086         fieldToTopic[*names] = selection[i];
00087       }
00088     }
00089   }
00090 
00091   const vector<SubjectFieldSpec>& aggregation = multitopic->get_aggregation();
00092   if (aggregation.size() == 0) { // "SELECT * FROM ..."
00093     const MetaStruct& meta = getResultingMeta();
00094     for (const char** names = meta.getFieldNames(); *names; ++names) {
00095       std::map<OPENDDS_STRING, OPENDDS_STRING>::const_iterator found =
00096         fieldToTopic.find(*names);
00097       if (found == fieldToTopic.end()) {
00098         if (DCPS_debug_level > 1) {
00099           ACE_DEBUG((LM_WARNING,
00100                      ACE_TEXT("(%P|%t) WARNING: ")
00101                      ACE_TEXT("MultiTopicDataReaderBase::init(), in SELECT * ")
00102                      ACE_TEXT("resulting field %C has no corresponding ")
00103                      ACE_TEXT("incoming field.\n"), *names));
00104         }
00105       } else {
00106         query_plans_[found->second].projection_.push_back(
00107           SubjectFieldSpec(*names));
00108       }
00109     }
00110   } else { // "SELECT A, B FROM ..."
00111     for (size_t i = 0; i < aggregation.size(); ++i) {
00112       std::map<OPENDDS_STRING, OPENDDS_STRING>::const_iterator found =
00113         fieldToTopic.find(aggregation[i].incoming_name_);
00114       if (found == fieldToTopic.end()) {
00115         throw std::runtime_error("Projected field " +
00116           aggregation[i].incoming_name_ + " has no incoming field.");
00117       } else {
00118         query_plans_[found->second].projection_.push_back(aggregation[i]);
00119       }
00120     }
00121   }
00122 
00123   typedef std::map<OPENDDS_STRING, set<OPENDDS_STRING> >::const_iterator iter_t;
00124   for (iter_t iter = joinKeys.begin(); iter != joinKeys.end(); ++iter) {
00125     const OPENDDS_STRING& field = iter->first;
00126     const set<OPENDDS_STRING>& topics = iter->second;
00127     for (set<OPENDDS_STRING>::const_iterator iter2 = topics.begin();
00128          iter2 != topics.end(); ++iter2) {
00129       const OPENDDS_STRING& topic = *iter2;
00130       QueryPlan& qp = query_plans_[topic];
00131       if (find_if(qp.projection_.begin(), qp.projection_.end(),
00132                   MatchesIncomingName(field)) == qp.projection_.end()) {
00133         qp.keys_projected_out_.push_back(field);
00134       }
00135       for (set<OPENDDS_STRING>::const_iterator iter3 = topics.begin();
00136            iter3 != topics.end(); ++iter3) {
00137         if (topic != *iter3) { // other topics
00138           qp.adjacent_joins_.insert(pair<const OPENDDS_STRING, OPENDDS_STRING>(*iter3, field));
00139         }
00140       }
00141     }
00142   }
00143 }

virtual void OpenDDS::DCPS::MultiTopicDataReaderBase::init_typed ( DataReaderEx dr  )  [private, pure virtual]

Implemented in OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >.

Referenced by init().

const MetaStruct & OpenDDS::DCPS::MultiTopicDataReaderBase::metaStructFor ( DDS::DataReader_ptr  dr  )  [protected]

Definition at line 153 of file MultiTopicDataReaderBase.cpp.

References OpenDDS::DCPS::TopicDescriptionImpl::get_type_support().

Referenced by data_available(), and init().

00154 {
00155   DDS::TopicDescription_var td = reader->get_topicdescription();
00156   TopicDescriptionImpl* tdi = dynamic_cast<TopicDescriptionImpl*>(td.in());
00157   TypeSupportImpl* ts = dynamic_cast<TypeSupportImpl*>(tdi->get_type_support());
00158   return ts->getMetaStructForType();
00159 }

OpenDDS::DCPS::MultiTopicDataReaderBase::OPENDDS_MAP ( OPENDDS_STRING  ,
QueryPlan   
) [protected]

void OpenDDS::DCPS::MultiTopicDataReaderBase::reset_latency_stats (  ) 

Definition at line 414 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00415 {
00416   resulting_reader_->reset_latency_stats();
00417 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::set_listener ( DDS::DataReaderListener_ptr  a_listener,
DDS::StatusMask  mask 
)

Definition at line 330 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00332 {
00333   return resulting_reader_->set_listener(a_listener, mask);
00334 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::set_qos ( const DDS::DataReaderQos qos  ) 

Definition at line 319 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00321 {
00322   return resulting_reader_->set_qos(qos);
00323 }

void OpenDDS::DCPS::MultiTopicDataReaderBase::set_status_changed_flag ( DDS::StatusKind  status,
bool  flag 
)

Definition at line 242 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00244 {
00245   dynamic_cast<DataReaderImpl*>(resulting_reader_.in())
00246     ->set_status_changed_flag(status, flag);
00247 }

void OpenDDS::DCPS::MultiTopicDataReaderBase::statistics_enabled ( CORBA::Boolean  statistics_enabled  ) 

Definition at line 424 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00426 {
00427   resulting_reader_->statistics_enabled(statistics_enabled);
00428 }

CORBA::Boolean OpenDDS::DCPS::MultiTopicDataReaderBase::statistics_enabled (  ) 

Definition at line 419 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00420 {
00421   return resulting_reader_->statistics_enabled();
00422 }

OPENDDS_STRING OpenDDS::DCPS::MultiTopicDataReaderBase::topicNameFor ( DDS::DataReader_ptr  dr  )  [protected]

Definition at line 145 of file MultiTopicDataReaderBase.cpp.

Referenced by data_available().

00146 {
00147   DDS::TopicDescription_var td = reader->get_topicdescription();
00148   CORBA::String_var topic = td->get_name();
00149   return topic.in();
00150 }

DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReaderBase::wait_for_historical_data ( const DDS::Duration_t max_wait  ) 

Definition at line 387 of file MultiTopicDataReaderBase.cpp.

References resulting_reader_.

00389 {
00390   return resulting_reader_->wait_for_historical_data(max_wait);
00391 }


Member Data Documentation

DDS::DataReaderListener_var OpenDDS::DCPS::MultiTopicDataReaderBase::listener_ [private]

Definition at line 157 of file MultiTopicDataReaderBase.h.

Referenced by init().

DataReaderEx_var OpenDDS::DCPS::MultiTopicDataReaderBase::resulting_reader_ [private]

Definition at line 158 of file MultiTopicDataReaderBase.h.

Referenced by cleanup(), create_querycondition(), create_readcondition(), data_available(), delete_contained_entities(), delete_readcondition(), enable(), get_instance_handle(), get_latency_stats(), get_listener(), get_liveliness_changed_status(), get_matched_publication_data(), get_matched_publications(), get_qos(), get_requested_deadline_missed_status(), get_requested_incompatible_qos_status(), get_sample_lost_status(), get_sample_rejected_status(), get_status_changes(), get_statuscondition(), get_subscriber(), get_subscription_matched_status(), get_topicdescription(), have_sample_states(), init(), reset_latency_stats(), set_listener(), set_qos(), set_status_changed_flag(), statistics_enabled(), and wait_for_historical_data().


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