summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-12-31 21:45:42 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-12-31 21:45:42 +0000
commit9b67a932a723b6c5d63446c51b2b2f210b7e9633 (patch)
tree73dacc060ca3b9395fb9d3a67f63f495d4bb279c /TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.h
parent1f1b17ba8799be8881db8267490b4e3b1c4e37c3 (diff)
downloadATCD-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.h108
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 */