8 #ifndef OPENDDS_DCPS_MULTITOPICDATAREADER_T_H 9 #define OPENDDS_DCPS_MULTITOPICDATAREADER_T_H 11 #ifndef OPENDDS_NO_MULTI_TOPIC 15 #if !defined (ACE_LACKS_PRAGMA_ONCE) 24 template<
typename Sample,
typename TypedDataReader>
26 :
public virtual LocalObject<typename TypedDataReader::Interface>
48 DDS::ReadCondition_ptr a_condition);
52 DDS::ReadCondition_ptr a_condition);
109 ,
view_(sampinfo.view_state)
116 info_.insert(other.info_.begin(), other.info_.end());
136 SampleVec starting,
const TopicSet& seen,
144 const std::vector<OPENDDS_STRING>& key_names,
145 const void* key_data, DDS::DataReader_ptr other_dr,
152 const TopicSet& seen,
const QueryPlan& qp);
158 void combine(SampleVec& resulting,
const SampleVec& other,
159 const std::vector<OPENDDS_STRING>& key_names,
160 const TopicSet& other_topics);
167 const TopicSet& other_topics);
171 : meta_(meta), ptr_(doAlloc ? meta.allocate() : 0) {}
180 bool operator()(
const std::pair<
const std::set<OPENDDS_STRING>, SampleVec>& e)
const 182 return e.first.count(look_for_topic_);
196 #ifdef ACE_TEMPLATES_REQUIRE_SOURCE local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long in ::DDS::SampleStateMask sample_states
OPENDDS_MAP(OPENDDS_STRING, DDS::InstanceHandle_t) info_
void incoming_sample(void *sample, const DDS::SampleInfo &info, const char *topic, const MetaStruct &meta)
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long in ::DDS::SampleStateMask in ::DDS::ViewStateMask in ::DDS::InstanceStateMask instance_states
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)
void assign_fields(Sample &resulting, void *incoming, const QueryPlan &qp, const MetaStruct &meta)
std::vector< SampleWithInfo > SampleVec
sequence< SampleInfo > SampleInfoSeq
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 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(SampleSeq &received_data, DDS::SampleInfoSeq &info_seq, CORBA::Long max_samples, DDS::SampleStateMask sample_states, DDS::ViewStateMask view_states, DDS::InstanceStateMask instance_states)
TypedDataReader::Interface::_var_type typed_reader_
std::set< OPENDDS_STRING > TopicSet
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)
unsigned long InstanceStateMask
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)
bool 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)
local interface<%TYPE%> inout ::DDS::SampleInfoSeq info_seq
DDS::ReturnCode_t get_key_value(Sample &key_holder, DDS::InstanceHandle_t handle)
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long in ::DDS::SampleStateMask in ::DDS::ViewStateMask view_states
void assign_resulting_fields(Sample &target, const Sample &source, const TopicSet &other_topics)
DDS::ReturnCode_t read_w_condition(SampleSeq &data_values, DDS::SampleInfoSeq &sample_infos, CORBA::Long max_samples, DDS::ReadCondition_ptr a_condition)
InstanceHandle_t instance_handle
DDS::ReturnCode_t process_joins(OPENDDS_MAP(TopicSet, SampleVec)&partial_results, SampleVec starting, const TopicSet &seen, const QueryPlan &qp)
const ViewStateKind NEW_VIEW_STATE
DDS::ReturnCode_t read_next_sample(Sample &received_data, DDS::SampleInfo &sample_info)
DDS::ReturnCode_t return_loan(SampleSeq &received_data, DDS::SampleInfoSeq &info_seq)
SampleWithInfo(const OPENDDS_STRING &topic, const DDS::SampleInfo &sampinfo)
void combine(const SampleWithInfo &other)
unsigned long SampleStateMask
Contains(const OPENDDS_STRING &s)
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)
HANDLE_TYPE_NATIVE InstanceHandle_t
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long max_samples
void init_typed(DataReaderEx *dr)
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)
const OPENDDS_STRING & look_for_topic_
GenericData(const MetaStruct &meta, bool doAlloc=true)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
DDS::InstanceHandle_t lookup_instance(const Sample &instance_data)
TAO::DCPS::ZeroCopyDataSeq< Sample > SampleSeq
unsigned long ViewStateKind
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_next_sample(Sample &received_data, DDS::SampleInfo &sample_info)
const MetaStruct & getResultingMeta()
bool operator()(const std::pair< const std::set< OPENDDS_STRING >, SampleVec > &e) const
The Internal API and Implementation of OpenDDS.
unsigned long ViewStateMask
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 cross_join(OPENDDS_MAP(TopicSet, SampleVec)&partial_results, const TopicSet &seen, const QueryPlan &qp)