diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-03-04 00:34:22 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-03-04 00:34:22 +0000 |
commit | b95f9ec14f3b646c2a73250aeb103ee69b4128fa (patch) | |
tree | ab50e40e9262b532976506d49cdf5e66435a3654 /TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h | |
parent | 35bca0cfbdf77d1df281719b4e1d968f3471c0a5 (diff) | |
download | ATCD-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.h | 86 |
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 */ |