8 #ifndef OPENDDS_DCPS_CONTENTFILTEREDTOPICIMPL_H 9 #define OPENDDS_DCPS_CONTENTFILTEREDTOPICIMPL_H 11 #ifndef OPENDDS_NO_CONTENT_FILTERED_TOPIC 18 #if !defined (ACE_LACKS_PRAGMA_ONCE) 38 char* get_filter_expression();
44 DDS::Topic_ptr get_related_topic();
49 template<
typename Sample>
50 bool filter(
const Sample& s,
bool sample_only_has_key_fields)
const 58 if (!ts || (sample_only_has_key_fields && filter_eval_.has_non_key_fields(*ts))) {
61 return filter_eval_.eval(s, expression_parameters_);
69 return filter_eval_.usesExtendedGrammar () ?
"OPENDDSSQL" :
"DDSSQL";
89 #endif // OPENDDS_NO_CONTENT_FILTERED_TOPIC
Implements the OpenDDS::DCPS::DomainParticipant interfaces.
DDS::StringSeq expression_parameters_
ACE_Recursive_Thread_Mutex lock_
Concurrent access to expression_parameters_ and readers_.
bool filter(const Sample &s, bool sample_only_has_key_fields) const
virtual ~ContentFilteredTopicImpl()
#define OpenDDS_Dcps_Export
ACE_Guard< ACE_Thread_Mutex > lock_
DDS::Topic_var related_topic_
const char * get_filter_class_name() const
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
OPENDDS_STRING filter_expression_
Implements the DDS::DataReader interface.
FilterEvaluator filter_eval_
Implements the DDS::TopicDescription interface.
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
typedef OPENDDS_VECTOR(ActionConnectionRecord) ConnectionRecords
The Internal API and Implementation of OpenDDS.
sequence< string > StringSeq