#include <QueryConditionImpl.h>


Public Member Functions | |
| QueryConditionImpl (DataReaderImpl *dr, DDS::SampleStateMask sample_states, DDS::ViewStateMask view_states, DDS::InstanceStateMask instance_states, const char *query_expression) | |
| virtual | ~QueryConditionImpl () |
| char * | get_query_expression () |
| DDS::ReturnCode_t | get_query_parameters (DDS::StringSeq &query_parameters) |
| DDS::ReturnCode_t | set_query_parameters (const DDS::StringSeq &query_parameters) |
| CORBA::Boolean | get_trigger_value () |
| std::vector< OPENDDS_STRING > | getOrderBys () const |
| bool | hasFilter () const |
| template<typename Sample > | |
| bool | filter (const Sample &s) const |
Private Attributes | |
| CORBA::String_var | query_expression_ |
| DDS::StringSeq | query_parameters_ |
| FilterEvaluator | evaluator_ |
| ACE_Recursive_Thread_Mutex | lock_ |
| Concurrent access to query_parameters_. | |
Definition at line 31 of file QueryConditionImpl.h.
| OpenDDS::DCPS::QueryConditionImpl::QueryConditionImpl | ( | DataReaderImpl * | dr, | |
| DDS::SampleStateMask | sample_states, | |||
| DDS::ViewStateMask | view_states, | |||
| DDS::InstanceStateMask | instance_states, | |||
| const char * | query_expression | |||
| ) |
Definition at line 19 of file QueryConditionImpl.cpp.
References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, evaluator_, LM_DEBUG, and OpenDDS::DCPS::FilterEvaluator::number_parameters().
00023 : ReadConditionImpl(dr, sample_states, view_states, instance_states) 00024 , query_expression_(query_expression) 00025 , evaluator_(query_expression, true) 00026 { 00027 if (DCPS_debug_level > 5) { 00028 ACE_DEBUG((LM_DEBUG, 00029 ACE_TEXT("(%P|%t) QueryConditionImpl::QueryConditionImpl() - ") 00030 ACE_TEXT("Creating qc with query <%C> which requires <%d> parameters\n"), 00031 query_expression, evaluator_.number_parameters())); 00032 } 00033 }

| virtual OpenDDS::DCPS::QueryConditionImpl::~QueryConditionImpl | ( | ) | [inline, virtual] |
Definition at line 39 of file QueryConditionImpl.h.
| bool OpenDDS::DCPS::QueryConditionImpl::filter | ( | const Sample & | s | ) | const [inline] |
Definition at line 55 of file QueryConditionImpl.h.
Referenced by OpenDDS::DCPS::RakeResults< SampleSeq >::insert_sample().
00056 { 00057 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, guard, lock_, false); 00058 return evaluator_.eval(s, query_parameters_); 00059 }

| char * OpenDDS::DCPS::QueryConditionImpl::get_query_expression | ( | ) |
Implements DDS::QueryCondition.
Definition at line 35 of file QueryConditionImpl.cpp.
References query_expression_, and FACE::string_dup().
00036 { 00037 return CORBA::string_dup(query_expression_); 00038 }

| DDS::ReturnCode_t OpenDDS::DCPS::QueryConditionImpl::get_query_parameters | ( | DDS::StringSeq & | query_parameters | ) |
Definition at line 41 of file QueryConditionImpl.cpp.
References lock_, query_parameters_, and DDS::RETCODE_OK.
00042 { 00043 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, guard, lock_, false); 00044 query_parameters = query_parameters_; 00045 return DDS::RETCODE_OK; 00046 }
| CORBA::Boolean OpenDDS::DCPS::QueryConditionImpl::get_trigger_value | ( | ) |
Reimplemented from OpenDDS::DCPS::ReadConditionImpl.
Definition at line 84 of file QueryConditionImpl.cpp.
References OpenDDS::DCPS::DataReaderImpl::contains_sample_filtered(), evaluator_, hasFilter(), OpenDDS::DCPS::ReadConditionImpl::instance_states_, lock_, OpenDDS::DCPS::ReadConditionImpl::parent_, query_parameters_, OpenDDS::DCPS::DataReaderImpl::sample_lock_, OpenDDS::DCPS::ReadConditionImpl::sample_states_, and OpenDDS::DCPS::ReadConditionImpl::view_states_.
00085 { 00086 if (hasFilter()) { 00087 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, guard2, parent_->sample_lock_, false); 00088 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, guard, lock_, false); 00089 return parent_->contains_sample_filtered(sample_states_, view_states_, 00090 instance_states_, evaluator_, query_parameters_); 00091 } else { 00092 return ReadConditionImpl::get_trigger_value(); 00093 } 00094 }

| std::vector< OPENDDS_STRING > OpenDDS::DCPS::QueryConditionImpl::getOrderBys | ( | ) | const |
Definition at line 72 of file QueryConditionImpl.cpp.
References evaluator_.
Referenced by OpenDDS::DCPS::RakeResults< SampleSeq >::RakeResults().
00073 { 00074 return evaluator_.getOrderBys(); 00075 }

| bool OpenDDS::DCPS::QueryConditionImpl::hasFilter | ( | ) | const |
Definition at line 78 of file QueryConditionImpl.cpp.
References evaluator_, and OpenDDS::DCPS::FilterEvaluator::hasFilter().
Referenced by get_trigger_value(), and OpenDDS::DCPS::RakeResults< SampleSeq >::RakeResults().
00079 { 00080 return evaluator_.hasFilter(); 00081 }


| DDS::ReturnCode_t OpenDDS::DCPS::QueryConditionImpl::set_query_parameters | ( | const DDS::StringSeq & | query_parameters | ) |
Definition at line 49 of file QueryConditionImpl.cpp.
References ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, evaluator_, LM_ERROR, lock_, OpenDDS::DCPS::FilterEvaluator::number_parameters(), query_parameters_, DDS::RETCODE_ERROR, and DDS::RETCODE_OK.
00050 { 00051 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, guard, lock_, false); 00052 00053 // Check sequence of strings that give values to the ‘parameters’ (i.e., "%n" tokens) 00054 // in the query_expression matches the size of the parameter sequence. 00055 // The tokens start with 0 which means that when the maximum number used is 1 we need 00056 // two parameters, (zero and one) 00057 if (query_parameters.length() != evaluator_.number_parameters()) { 00058 if (DCPS_debug_level > 1) { 00059 ACE_ERROR((LM_ERROR, 00060 ACE_TEXT("(%P|%t) QueryConditionImpl::set_expression_parameters() - ") 00061 ACE_TEXT("passed incorrect set of query parameters, expected %d received %d\n"), 00062 evaluator_.number_parameters (), query_parameters.length())); 00063 } 00064 return DDS::RETCODE_ERROR; 00065 } 00066 00067 query_parameters_ = query_parameters; 00068 return DDS::RETCODE_OK; 00069 }

Definition at line 64 of file QueryConditionImpl.h.
Referenced by get_trigger_value(), getOrderBys(), hasFilter(), QueryConditionImpl(), and set_query_parameters().
ACE_Recursive_Thread_Mutex OpenDDS::DCPS::QueryConditionImpl::lock_ [mutable, private] |
Concurrent access to query_parameters_.
Reimplemented from OpenDDS::DCPS::ConditionImpl.
Definition at line 66 of file QueryConditionImpl.h.
Referenced by get_query_parameters(), get_trigger_value(), and set_query_parameters().
Definition at line 62 of file QueryConditionImpl.h.
Referenced by get_query_expression().
Definition at line 63 of file QueryConditionImpl.h.
Referenced by get_query_parameters(), get_trigger_value(), and set_query_parameters().
1.6.1