8 #ifndef OPENDDS_DCPS_QUERYCONDITIONIMPL_H 9 #define OPENDDS_DCPS_QUERYCONDITIONIMPL_H 11 #ifndef OPENDDS_NO_QUERY_CONDITION 13 #include "dds/DdsDcpsSubscriptionC.h" 18 #if !defined (ACE_LACKS_PRAGMA_ONCE) 30 class TypeSupportImpl;
38 const char* query_expression);
42 char* get_query_expression();
51 std::vector<OPENDDS_STRING> getOrderBys()
const;
53 bool hasFilter()
const;
58 template<
typename Sample>
59 bool filter(
const Sample& s,
bool sample_only_has_key_fields)
const 67 if (!ts || (sample_only_has_key_fields && evaluator_.has_non_key_fields(*ts))) {
70 ACE_TEXT(
"(%P|%t) QueryConditionImpl::filter: ")
71 ACE_TEXT(
"Sample has been filtered because the query ")
72 ACE_TEXT(
"references fields that are not readable\n")
77 return evaluator_.eval(s, query_parameters_);
95 #endif // OPENDDS_NO_QUERY_CONDITION
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long in ::DDS::SampleStateMask sample_states
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long in ::DDS::SampleStateMask in ::DDS::ViewStateMask in ::DDS::InstanceStateMask instance_states
#define OpenDDS_Dcps_Export
ACE_Recursive_Thread_Mutex lock_
Concurrent access to query_parameters_.
unsigned long InstanceStateMask
DDS::StringSeq query_parameters_
ACE_Guard< ACE_Thread_Mutex > lock_
local interface<%TYPE%> inout ::DDS::SampleInfoSeq in long in ::DDS::SampleStateMask in ::DDS::ViewStateMask view_states
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
Implements the DDS::DataReader interface.
bool filter(const Sample &s, bool sample_only_has_key_fields) const
unsigned long SampleStateMask
FilterEvaluator evaluator_
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
CORBA::String_var query_expression_
The Internal API and Implementation of OpenDDS.
unsigned long ViewStateMask
virtual ~QueryConditionImpl()
sequence< string > StringSeq