10 #ifndef OPENDDS_NO_CONTENT_FILTERED_TOPIC 22 DDS::Topic_ptr related_topic,
const char* filter_expression,
28 , filter_expression_(filter_expression)
29 , filter_eval_(filter_expression, false )
34 ACE_TEXT(
"(%P|%t) ContentFilteredTopicImpl::ContentFilteredTopicImpl() - ")
35 ACE_TEXT(
"Creating cft with filter <%C> which requires <%d> parameters\n"),
55 bool string_equal(
const char* a,
const char* b) {
56 return std::strcmp(a, b) == 0;
75 ACE_TEXT(
"(%P|%t) ContentFilteredTopicImpl::set_expression_parameters() - ")
76 ACE_TEXT(
"passed incorrect set of filter parameters, expected %d received %d\n"),
83 const char*
const* p_buf = p.get_buffer();
87 #pragma warning(disable : 4996) 89 if (std::equal(&p_buf[0], &p_buf[len], &e_buf[0], string_equal)) {
100 Readers readers_still_alive;
102 for (Readers::iterator iter =
readers_.begin(),
103 end =
readers_.end(); iter != end; ++iter) {
106 reader->update_subscription_params(p);
107 readers_still_alive.push_back(*iter);
137 Readers::iterator end =
readers_.end();
146 #endif // OPENDDS_NO_CONTENT_FILTERED_TOPIC void swap(MessageBlock &lhs, MessageBlock &rhs)
Implements the OpenDDS::DCPS::DomainParticipant interfaces.
#define ACE_GUARD(MUTEX, OBJ, LOCK)
DDS::StringSeq expression_parameters_
ACE_Recursive_Thread_Mutex lock_
Concurrent access to expression_parameters_ and readers_.
char * get_filter_expression()
DDS::Topic_var related_topic_
DDS::ReturnCode_t get_expression_parameters(DDS::StringSeq ¶meters)
char * string_dup(const char *)
size_t number_parameters() const
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
OPENDDS_STRING filter_expression_
Implements the DDS::DataReader interface.
const ReturnCode_t RETCODE_OUT_OF_RESOURCES
DDS::Topic_ptr get_related_topic()
ContentFilteredTopicImpl(const char *name, DDS::Topic_ptr related_topic, const char *filter_expression, DomainParticipantImpl *participant)
FilterEvaluator filter_eval_
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
Implements the DDS::TopicDescription interface.
const ReturnCode_t RETCODE_ERROR
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
DDS::ReturnCode_t set_expression_parameters(const DDS::StringSeq ¶meters)
void add_reader(DataReaderImpl &reader)
int remove(Container &c, const ValueType &v)
const ReturnCode_t RETCODE_OK
The Internal API and Implementation of OpenDDS.
void remove_reader(DataReaderImpl &reader)
sequence< string > StringSeq