7 #ifndef RAKERESULTS_T_CPP 8 #define RAKERESULTS_T_CPP 21 template <
class MessageType>
27 #ifndef OPENDDS_NO_QUERY_CONDITION
28 DDS::QueryCondition_ptr cond,
32 , received_data_(received_data)
34 , max_samples_(max_samples)
35 #ifndef OPENDDS_NO_QUERY_CONDITION
42 #ifndef OPENDDS_NO_QUERY_CONDITION 48 ACE_TEXT(
"failed to obtain QueryConditionImpl\n")));
60 for (
size_t i = order_bys.size(); i > 0; --i) {
61 const String& fieldspec = order_bys[i - 1];
63 cmp = getMetaStruct<MessageType>().create_qc_comparator(fieldspec.c_str(), cmp);
67 SortedSet actual_sort(comparator);
75 #ifndef OPENDDS_NO_QUERY_CONDITION 81 template <
class MessageType>
85 size_t index_in_instance)
87 #ifndef OPENDDS_NO_QUERY_CONDITION 91 const MessageType* typed_sample =
static_cast<MessageType*
>(sample->
registered_data_);
102 #ifndef OPENDDS_NO_QUERY_CONDITION 106 RakeData rd = {sample, rdel, instance, index_in_instance};
112 RakeData rd = {sample, rdel, instance, index_in_instance};
113 unsorted_.push_back(rd);
119 template <
class MessageType>
120 template <
class FwdIter>
125 InstanceMap inst_map;
128 InstanceSet released_instances;
137 received_data_p.assign_sample(idx, MessageType());
140 received_data_p.assign_sample(idx,
145 received_data_p.assign_ptr(idx, rde);
155 std::pair<typename InstanceMap::iterator, bool> result =
161 id.MRS_disposed_gc_ =
163 id.MRS_nowriters_gc_ =
167 if (iter->index_in_instance_ >=
id.MRSIC_index_) {
168 id.MRSIC_index_ = iter->index_in_instance_;
169 id.MRSIC_disposed_gc_ =
171 id.MRSIC_nowriters_gc_ =
175 if (!
id.most_recent_generation_) {
176 id.most_recent_generation_ =
180 id.sampleinfo_positions_.push_back(idx);
187 released_instances.insert(&inst);
194 for (
typename InstanceMap::iterator i_iter(inst_map.begin()),
195 i_end(inst_map.end()); i_iter != i_end; ++i_iter) {
201 if (released_instances.find(&inst) == released_instances.end()) {
202 if (
id.most_recent_generation_) {
209 static_cast<CORBA::Long>(
id.sampleinfo_positions_.size());
211 for (IndexList::iterator s_iter(
id.sampleinfo_positions_.begin()),
212 s_end(
id.sampleinfo_positions_.end()); s_iter != s_end; ++s_iter) {
225 template <
class MessageType>
231 size_t len = std::min(static_cast<size_t>(
sorted_.size()),
233 received_data_p.internal_set_length(static_cast<CORBA::ULong>(len));
234 info_seq_.length(static_cast<CORBA::ULong>(len));
238 size_t len = unsorted_.size();
239 received_data_p.internal_set_length(static_cast<CORBA::ULong>(len));
240 info_seq_.length(static_cast<CORBA::ULong>(len));
241 return copy_into(unsorted_.begin(), unsorted_.end(), received_data_p);
250 #endif // RAKERESULTS_T_CPP
DDSTraits< MessageType >::MessageSequenceAdapterType MessageSequenceAdapterType
const ReceivedDataElement * peek_tail()
sequence< SampleInfo > SampleInfoSeq
DDSTraits< MessageType >::MessageSequenceType SampleSeq
PresentationQosPolicyAccessScopeKind access_scope
long absolute_generation_rank
void *const registered_data_
void accessed()
A read or take operation has been performed on this instance.
local interface<%TYPE%> inout ::DDS::SampleInfoSeq info_seq
void sample_info(DDS::SampleInfo &si, const ReceivedDataElement *de)
Populate the SampleInfo structure.
bool valid_data_
Do we contain valid data.
RakeResults(DataReaderImpl *reader, SampleSeq &received_data, DDS::SampleInfoSeq &info_seq, CORBA::Long max_samples, DDS::PresentationQosPolicy presentation, DDS::QueryCondition_ptr cond, Operation_t oper)
size_t disposed_generation_count_
CORBA::ULong max_samples_
DDS::SampleInfoSeq & info_seq_
Implements the DDS::DataReader interface.
bool filter(const Sample &s, bool sample_only_has_key_fields) const
std::vector< OPENDDS_STRING > getOrderBys() const
bool most_recent_generation(ReceivedDataElement *item) const
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long max_samples
void mark_read(ReceivedDataElement *item)
bool insert_sample(ReceivedDataElement *sample, ReceivedDataElementList *rdel, SubscriptionInstance_rch instance, size_t index_in_instance)
bool remove(ReceivedDataElement *data_sample)
Struct that has information about an instance and the instance sample list.
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
ReceivedDataElementList rcvd_samples_
Data sample(s) in this instance.
SampleSeq & received_data_
const InstanceState_rch instance_state_
Instance state for this instance.
The Internal API and Implementation of OpenDDS.
bool copy_into(FwdIter begin, FwdIter end, MessageSequenceAdapterType &received_data_p)
typedef OPENDDS_MAP(OPENDDS_STRING, OPENDDS_STRING) ValueMap
Helper types and functions for config file parsing.
size_t no_writers_generation_count_
DDS::QueryCondition_ptr cond_
typedef OPENDDS_SET(NetworkAddress) AddrSet