summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.inl')
-rw-r--r--TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.inl33
1 files changed, 33 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.inl b/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.inl
new file mode 100644
index 00000000000..d036dd2d16b
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.inl
@@ -0,0 +1,33 @@
+// -*- C++ -*-
+//
+//$Id$
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+ACE_INLINE CORBA::Boolean
+TAO_Notify_FilterAdmin::match (const TAO_Notify_Event* event)
+{
+ ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, ace_mon, this->lock_,
+ CORBA::INTERNAL ());
+
+ // If no filter is active, match is successfull.
+ if (this->filter_list_.current_size () == 0)
+ return 1;
+
+ // We want to return true if atleast one constraint matches.
+ FILTER_LIST::ITERATOR iter (this->filter_list_);
+ FILTER_LIST::ENTRY *entry;
+ CORBA::Boolean ret_val = 0;
+
+ for (; iter.next (entry); iter.advance ())
+ {
+ ret_val = event->do_match (entry->int_id_.in ());
+
+ if (ret_val == 1)
+ return 1;
+ }
+
+ return 0;
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL