summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-03-04 00:34:22 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-03-04 00:34:22 +0000
commitb95f9ec14f3b646c2a73250aeb103ee69b4128fa (patch)
treeab50e40e9262b532976506d49cdf5e66435a3654 /TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h
parent35bca0cfbdf77d1df281719b4e1d968f3471c0a5 (diff)
downloadATCD-b95f9ec14f3b646c2a73250aeb103ee69b4128fa.tar.gz
ChangeLogTag:Wed Mar 3 18:28:51 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h
new file mode 100644
index 00000000000..837db0ab77c
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h
@@ -0,0 +1,86 @@
+/* -*- C++ -*- */
+// $Id$
+//
+// ============================================================================
+//
+// = LIBRARY
+// ORBSVCS Real-time Event Channel
+//
+// = FILENAME
+// EC_Per_Supplier_Filter
+//
+// = AUTHOR
+// Carlos O'Ryan (coryan@cs.wustl.edu)
+//
+// = DESCRIPTION
+// Another implementation for the TAO_EC_SupplierFiltering strategy,
+// this one keeps a list of consumer (proxies) for each supplier.
+//
+// = CREDITS
+// Based on previous work by Tim Harrison (harrison@cs.wustl.edu)
+// and other members of the DOC group.
+// More details can be found in:
+// http://www.cs.wustl.edu/~schmidt/oopsla.ps.gz
+// http://www.cs.wustl.edu/~schmidt/JSAC-98.ps.gz
+//
+//
+// ============================================================================
+
+#ifndef TAO_EC_PER_SUPPLIER_FILTER_H
+#define TAO_EC_PER_SUPPLIER_FILTER_H
+
+#include "EC_SupplierFiltering.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class TAO_EC_ProxyPushSupplier_Set;
+
+class TAO_EC_Per_Supplier_Filter : public TAO_EC_SupplierFiltering
+{
+ // = TITLE
+ // Filter the events on each supplier.
+ //
+ // = DESCRIPTION
+ // This is a filtering strategy for the suppliers. In this
+ // particular case we keep a collection of the consumers that
+ // could potentially be interested in any event generated by a
+ // particular supplier.
+ // This minimizes the amount of consumers touched by the EC when
+ // dispatching an event.
+ //
+public:
+ TAO_EC_Per_Supplier_Filter (TAO_EC_Event_Channel* ec);
+ // Constructor
+
+ virtual ~TAO_EC_Per_Supplier_Filter (void);
+ // Destructor
+
+ // = The TAO_EC_SupplierFiltering methods.
+ virtual void bind (TAO_EC_ProxyPushConsumer* consumer);
+ virtual void unbind (TAO_EC_ProxyPushConsumer* consumer);
+ virtual void connected (TAO_EC_ProxyPushSupplier* supplier,
+ CORBA::Environment &env);
+ virtual void disconnected (TAO_EC_ProxyPushSupplier* supplier,
+ CORBA::Environment &env);
+ virtual void push (const RtecEventComm::EventSet& event,
+ CORBA::Environment &);
+
+private:
+ TAO_EC_Event_Channel *event_channel_;
+ // The event channel, used to locate the set of consumers.
+
+ TAO_EC_ProxyPushConsumer* consumer_;
+ // The proxy for the supplier we are bound to.
+
+ TAO_EC_ProxyPushSupplier_Set* supplier_set_;
+ // Keep the list of proxies for the consumers that may be interested
+ // in our events.
+};
+
+#if defined (__ACE_INLINE__)
+#include "EC_Per_Supplier_Filter.i"
+#endif /* __ACE_INLINE__ */
+
+#endif /* TAO_EC_PER_SUPPLIER_FILTER_H */