summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/orbsvcs/Event/EC_Filter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/Event/EC_Filter.cpp')
-rw-r--r--trunk/TAO/orbsvcs/orbsvcs/Event/EC_Filter.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/Event/EC_Filter.cpp b/trunk/TAO/orbsvcs/orbsvcs/Event/EC_Filter.cpp
new file mode 100644
index 00000000000..b8c32a6ad68
--- /dev/null
+++ b/trunk/TAO/orbsvcs/orbsvcs/Event/EC_Filter.cpp
@@ -0,0 +1,130 @@
+// $Id$
+
+#include "orbsvcs/Event/EC_Filter.h"
+#include "orbsvcs/Event/EC_QOS_Info.h"
+
+#include "tao/ORB_Constants.h"
+
+#if ! defined (__ACE_INLINE__)
+#include "orbsvcs/Event/EC_Filter.inl"
+#endif /* __ACE_INLINE__ */
+
+ACE_RCSID (Event,
+ EC_Filter,
+ "$Id$")
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+TAO_EC_Filter::~TAO_EC_Filter (void)
+{
+}
+
+void
+TAO_EC_Filter::adopt_child (TAO_EC_Filter* child)
+{
+ child->parent_ = this;
+}
+
+TAO_EC_Filter::ChildrenIterator
+TAO_EC_Filter::begin (void) const
+{
+ return 0;
+}
+
+TAO_EC_Filter::ChildrenIterator
+TAO_EC_Filter::end (void) const
+{
+ return 0;
+}
+
+int
+TAO_EC_Filter::size (void) const
+{
+ return 0;
+}
+
+void
+TAO_EC_Filter::get_qos_info (TAO_EC_QOS_Info& qos_info
+ ACE_ENV_ARG_DECL)
+{
+ ACE_UNUSED_ARG (qos_info);
+ ACE_THROW (CORBA::NO_IMPLEMENT (TAO::VMCID,
+ CORBA::COMPLETED_NO));
+}
+
+// ****************************************************************
+
+int
+TAO_EC_Null_Filter::filter (const RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info& qos_info
+ ACE_ENV_ARG_DECL)
+{
+ // This is a leaf, no need to query any children, and we accept all
+ // events, so push it.
+ this->push (event, qos_info ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+ return 1;
+}
+
+int
+TAO_EC_Null_Filter::filter_nocopy (RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info& qos_info
+ ACE_ENV_ARG_DECL)
+{
+ // This is a leaf, no need to query any children, and we accept all
+ // events, so push it.
+ this->push_nocopy (event, qos_info ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+ return 1;
+}
+
+void
+TAO_EC_Null_Filter::push (const RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info& qos_info
+ ACE_ENV_ARG_DECL)
+{
+ if (this->parent () != 0)
+ this->parent ()->push (event, qos_info ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_EC_Null_Filter::push_nocopy (RtecEventComm::EventSet& event,
+ TAO_EC_QOS_Info& qos_info
+ ACE_ENV_ARG_DECL)
+{
+ if (this->parent () != 0)
+ this->parent ()->push_nocopy (event, qos_info ACE_ENV_ARG_PARAMETER);
+}
+
+void
+TAO_EC_Null_Filter::clear (void)
+{
+ // do nothing
+}
+
+CORBA::ULong
+TAO_EC_Null_Filter::max_event_size (void) const
+{
+ // @@ Is there a better way to express this?
+ return 0;
+}
+
+int
+TAO_EC_Null_Filter::can_match (const RtecEventComm::EventHeader&) const
+{
+ // @@ This method should be correctly so we can implement null
+ // filtering at the consumers but real filtering on the suppliers.
+ return 1;
+}
+
+int
+TAO_EC_Null_Filter::add_dependencies (
+ const RtecEventComm::EventHeader &,
+ const TAO_EC_QOS_Info &
+ ACE_ENV_ARG_DECL_NOT_USED)
+
+{
+ return 0;
+}
+
+TAO_END_VERSIONED_NAMESPACE_DECL