OpenDDS::DCPS::QueryConditionImpl Class Reference

#include <QueryConditionImpl.h>

Inheritance diagram for OpenDDS::DCPS::QueryConditionImpl:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::QueryConditionImpl:
Collaboration graph
[legend]

List of all members.

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_.

Detailed Description

Definition at line 31 of file QueryConditionImpl.h.


Constructor & Destructor Documentation

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 }

Here is the call graph for this function:

virtual OpenDDS::DCPS::QueryConditionImpl::~QueryConditionImpl (  )  [inline, virtual]

Definition at line 39 of file QueryConditionImpl.h.

00039 {}


Member Function Documentation

template<typename Sample >
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   }

Here is the caller graph for this function:

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 }

Here is the call graph for this function:

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 (  ) 
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 }

Here is the caller graph for this function:

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 }

Here is the call graph for this function:

Here is the caller graph for this function:

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 }

Here is the call graph for this function:


Member Data Documentation

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().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1