diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-12-31 21:45:42 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-12-31 21:45:42 +0000 |
commit | 9b67a932a723b6c5d63446c51b2b2f210b7e9633 (patch) | |
tree | 73dacc060ca3b9395fb9d3a67f63f495d4bb279c /TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h | |
parent | 1f1b17ba8799be8881db8267490b4e3b1c4e37c3 (diff) | |
download | ATCD-9b67a932a723b6c5d63446c51b2b2f210b7e9633.tar.gz |
ChangeLogTag:Thu Dec 31 15:28:49 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h new file mode 100644 index 00000000000..f8a6039d1dd --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h @@ -0,0 +1,108 @@ +/* -*- C++ -*- */ +// $Id$ +// +// ============================================================================ +// +// = LIBRARY +// ORBSVCS Real-time Event Channel +// +// = FILENAME +// EC_ProxyConsumer +// +// = AUTHOR +// Carlos O'Ryan (coryan@cs.wustl.edu) +// +// = DESCRIPTION +// Implement the RtecEventChannelAdmin::ProxyPushConsumer interface, +// remember that this class is used to communicate with a +// PushSupplier, so, in effect, this is the ambassador for a +// supplier inside the event channel. +// +// = 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_PROXYCONSUMER_H +#define TAO_EC_PROXYCONSUMER_H + +#include "orbsvcs/Event/EC_Filter.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_EC_Dispatching; +class TAO_EC_Filter_Builder; + +class TAO_EC_ProxyPushConsumer : public TAO_EC_Filter +{ + // = TITLE + // ProxyPushConsumer + // + // = DESCRIPTION + // Implements the ProxyPushConsumer interface, i.e. the object + // used to communicate with a particular consumer. + // + // = MEMORY MANAGMENT + // It makes a copy of the SupplierQOS and the supplier object + // reference. + // The object commits suicide when disconnect_push_consumer() is + // called. + // + // = LOCKING + // No provisions for locking, access must be serialized + // externally. + // +public: + TAO_EC_ProxyPushConsumer (TAO_EC_SupplierAdmin* supplier_admin); + // constructor... + + virtual ~TAO_EC_ProxyPushConsumer (void); + // destructor... + + CORBA::Boolean is_connected (void) const; + // Return 0 if no supplier is connected... + + RtecEventComm::PushSupplier_ptr supplier (void) const; + // Return the consumer object reference. It returns nil() if it has + // not connected yet. + + const RtecEventChannelAdmin::SupplierQOS& publications (void) const; + // The QoS (subscription) used to connect to the EC. + + virtual void connected (TAO_EC_ProxyPushSupplier* supplier) = 0; + virtual void disconnected (TAO_EC_ProxyPushSupplier* supplier) = 0; + // Concrete implementations can use this methods to keep track of + // the consumers interested in this events. + + // = The RtecEventChannelAdmin::ProxyPushConsumer methods... + virtual void connect_push_supplier ( + RtecEventComm::PushConsumer_ptr push_consumer, + const RtecEventChannelAdmin::ConsumerQOS& qos, + CORBA::Environment &); + virtual void push (const RtecEventComm::EventSet& event, + CORBA::Environment &); + virtual void disconnect_push_consumer (CORBA::Environment &); + +private: + TAO_EC_SupplierAdmin* supplier_admin_; + // The supplier admin, used for activation and memory managment. + + RtecEventComm::PushSupplier_var supplier_; + // The supplier.... + + RtecEventChannelAdmin::SupplierQOS qos_; + // The publication and QoS information... +}; + +#if defined (__ACE_INLINE__) +#include "EC_ProxyConsumer.i" +#endif /* __ACE_INLINE__ */ + +#endif /* TAO_EC_PROXYCONSUMER_H */ |