OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <MultiTopicDataReader_T.h>
Classes | |
struct | Contains |
struct | GenericData |
struct | SampleWithInfo |
Public Types | |
typedef TAO::DCPS::ZeroCopyDataSeq< Sample > | SampleSeq |
![]() | |
typedef TypedDataReader::Interface ::_ptr_type | _ptr_type |
typedef TypedDataReader::Interface ::_var_type | _var_type |
![]() | |
typedef LocalObject_ptr | _ptr_type |
typedef LocalObject_var | _var_type |
typedef LocalObject_out | _out_type |
![]() | |
typedef Object_ptr | _ptr_type |
typedef Object_var | _var_type |
typedef Object_out | _out_type |
![]() | |
typedef DataReaderEx ::_ptr_type | _ptr_type |
typedef DataReaderEx ::_var_type | _var_type |
Private Types | |
typedef std::vector< SampleWithInfo > | SampleVec |
typedef std::set< OPENDDS_STRING > | TopicSet |
Private Member Functions | |
void | assign_fields (Sample &resulting, void *incoming, const QueryPlan &qp, const MetaStruct &meta) |
DDS::ReturnCode_t | process_joins (OPENDDS_MAP(TopicSet, SampleVec)&partial_results, SampleVec starting, const TopicSet &seen, const QueryPlan &qp) |
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) |
DDS::ReturnCode_t | cross_join (OPENDDS_MAP(TopicSet, SampleVec)&partial_results, 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_ |
Definition at line 25 of file MultiTopicDataReader_T.h.
typedef TAO::DCPS::ZeroCopyDataSeq<Sample> OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::SampleSeq |
Definition at line 29 of file MultiTopicDataReader_T.h.
|
private |
Definition at line 125 of file MultiTopicDataReader_T.h.
|
private |
Definition at line 126 of file MultiTopicDataReader_T.h.
|
inline |
Definition at line 31 of file MultiTopicDataReader_T.h.
References OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::get_key_value(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::getResultingMeta(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::incoming_sample(), info_seq, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::init_typed(), instance_states, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::lookup_instance(), max_samples, 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(), sample_states, 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(), OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_w_condition(), and view_states.
|
private |
Definition at line 38 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MetaStruct::assign(), OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::keys_projected_out_, and OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::projection_.
|
private |
Definition at line 61 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MetaStruct::assign().
|
private |
Definition at line 159 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MetaStruct::compare().
|
private |
Definition at line 304 of file MultiTopicDataReader_T.cpp.
References OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::data_reader_, DDS::RETCODE_ERROR, and DDS::RETCODE_OK.
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::get_key_value | ( | Sample & | key_holder, |
DDS::InstanceHandle_t | handle | ||
) |
Definition at line 554 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
|
virtual |
Implements OpenDDS::DCPS::MultiTopicDataReaderBase.
Definition at line 31 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
|
virtual |
Implements OpenDDS::DCPS::MultiTopicDataReaderBase.
Definition at line 338 of file MultiTopicDataReader_T.cpp.
References ACE_ERROR, ACE_TEXT(), DDS::HANDLE_NIL, LM_ERROR, and DDS::RETCODE_OK.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
|
virtual |
Implements OpenDDS::DCPS::MultiTopicDataReaderBase.
Definition at line 24 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
|
private |
Definition at line 80 of file MultiTopicDataReader_T.cpp.
References ACE_ERROR, ACE_TEXT(), DDS::ALIVE_INSTANCE_STATE, DDS::ANY_VIEW_STATE, OpenDDS::DCPS::MetaStruct::compare(), OpenDDS::DCPS::DataReaderImpl::get_topicdescription(), DDS::HANDLE_NIL, TAO::String_var< charT >::in(), DDS::SampleInfo::instance_handle, LM_ERROR, LM_NOTICE, OpenDDS::DCPS::log_level, OpenDDS::DCPS::DataReaderImpl::lookup_instance_generic(), OpenDDS::DCPS::LogLevel::Notice, OpenDDS::DCPS::MetaStruct::numDcpsKeys(), 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, DDS::RETCODE_OK, OpenDDS::DCPS::retcode_to_string(), and DDS::SampleInfo::valid_data.
DDS::InstanceHandle_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::lookup_instance | ( | const Sample & | instance_data | ) |
Definition at line 562 of file MultiTopicDataReader_T.cpp.
References OPENDDS_END_VERSIONED_NAMESPACE_DECL.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
|
private |
Two constituent topics are joinable directly if they have some common join keys, or indirectly via a third topic which has common join keys with each of them. The constituent topics form one or more groups of connected topics. In each groups, topics are connected. But any two groups are not connected (otherwise, they would have been a single group). And so groups are cross-joined with each other. Within a group, topics are joined using process_joins(). Starting from an incoming sample of a given topic, it computes partial resulting samples from the samples of the constituent topics in the same group that are already received, in a DFS manner. contains entries for sets of topics, each corresponding to a path of topics which have been visited, starting from the incoming topic. For example, if the graph of visited topics looks like this A (incoming topic) / \ B C / / | \ D E F G / . . . H . . . . . . . then partial_results contains entries for topic sets: {A,B,D,H}, {A,C,E}, {A,C,F}, {A,C,G}. When traverse a path, if the next adjacent topic appears on a different path, i.e., there is an entry corresponding to that path in partial_results that has it in its topic set, then the two entries are combined into a new entry which contains topics from both of them. For example, if we are traversing path (A,C,G) and the next adjacent topic to G is B, which appears in path (A,B,D,H), then entries keyed by (A,C,G) and (A,B,D,H) are combined into a single entry with key (A,B,C,D,G,H). Entries (A,C,G) and (A,B,D,H) are removed from partial_results.
Definition at line 231 of file MultiTopicDataReader_T.cpp.
References ACE_GUARD_RETURN, OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::adjacent_joins_, OpenDDS::DCPS::MetaStruct::assign(), OpenDDS::DCPS::MultiTopicDataReaderBase::QueryPlan::data_reader_, OPENDDS_STRING, OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::GenericData::ptr_, DDS::RETCODE_ERROR, DDS::RETCODE_OK, and DDS::RETCODE_OUT_OF_RESOURCES.
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 396 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 454 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 | ||
) |
Definition at line 478 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 500 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 524 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::read_next_sample | ( | Sample & | received_data, |
DDS::SampleInfo & | sample_info | ||
) |
Definition at line 438 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 418 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::return_loan | ( | SampleSeq & | received_data, |
DDS::SampleInfoSeq & | info_seq | ||
) |
Definition at line 546 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 407 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 466 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 | ||
) |
Definition at line 489 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 512 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 535 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
DDS::ReturnCode_t OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::take_next_sample | ( | Sample & | received_data, |
DDS::SampleInfo & | sample_info | ||
) |
Definition at line 446 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
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 428 of file MultiTopicDataReader_T.cpp.
Referenced by OpenDDS::DCPS::MultiTopicDataReader_T< Sample, TypedDataReader >::MultiTopicDataReader_T().
|
private |
Definition at line 188 of file MultiTopicDataReader_T.h.