summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_ProxySupplier.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_ProxySupplier.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_ProxySupplier.h231
1 files changed, 0 insertions, 231 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxySupplier.h b/TAO/orbsvcs/orbsvcs/Event/EC_ProxySupplier.h
deleted file mode 100644
index bb14e56895b..00000000000
--- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxySupplier.h
+++ /dev/null
@@ -1,231 +0,0 @@
-// -*- C++ -*-
-/**
- * @file EC_ProxySupplier.h
- *
- * $Id$
- *
- * @author Carlos O'Ryan (coryan@cs.wustl.edu)
- *
- * 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://doc.ece.uci.edu/~coryan/EC/index.html
- */
-
-#ifndef TAO_EC_PROXYSUPPLIER_H
-#define TAO_EC_PROXYSUPPLIER_H
-
-#include /**/ "ace/pre.h"
-
-#include "orbsvcs/RtecEventChannelAdminS.h"
-
-#include "orbsvcs/Event/EC_Filter.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-
-class TAO_EC_Event_Channel_Base;
-class TAO_EC_ProxyPushConsumer;
-
-/**
- * @class TAO_EC_ProxyPushSupplier
- *
- * @brief ProxyPushSupplier
- *
- * Implement the RtecEventChannelAdmin::ProxyPushSupplier interface,
- * remember that this class is used to communicate with a
- * PushConsumer, so, in effect, this is the ambassador for a
- * consumer inside the event channel.
- *
- * <H2>Memory Management</H2>
- * It does not assume ownership of the TAO_EC_Dispatching object.
- * It makes a copy of the ConsumerQOS and the consumer object
- * reference.
- *
- * <H2>Locking</H2>
- * Locking is strategized, the event channel acts as a factory for
- * the locking strategies.
- *
- * @todo We don't need to provide a trivial filter, the object itself
- * could short-circuit the filter() ---> push() cycle when the EC
- * is properly configured, we need to explore this...
- */
-class TAO_RTEvent_Serv_Export TAO_EC_ProxyPushSupplier : public TAO_EC_Filter
-{
-public:
- typedef RtecEventChannelAdmin::ProxyPushSupplier Interface;
- typedef RtecEventChannelAdmin::ProxyPushSupplier_var _var_type;
- typedef RtecEventChannelAdmin::ProxyPushSupplier_ptr _ptr_type;
-
- /// Constructor...
- TAO_EC_ProxyPushSupplier (TAO_EC_Event_Channel_Base* event_channel, int validate_connection);
-
- /// Destructor...
- virtual ~TAO_EC_ProxyPushSupplier (void);
-
- /// Activate in the POA
- virtual void activate (
- RtecEventChannelAdmin::ProxyPushSupplier_ptr &proxy
- ACE_ENV_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
-
- /// Deactivate from the POA
- virtual void deactivate (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC (());
-
- /// Disconnect this from
- virtual void disconnect_push_supplier (
- ACE_ENV_SINGLE_ARG_DECL) = 0;
-
- /// Return 0 if no consumer is connected...
- CORBA::Boolean is_connected (void) const;
-
- /// Return 1 if it is suspended.
- CORBA::Boolean is_suspended (void) const;
-
- /**
- * Return the consumer object reference. It returns nil() if it has
- * not connected yet.
- */
- RtecEventComm::PushConsumer_ptr consumer (void) const;
-
- /// The QoS (subscription) used to connect to the EC.
- const RtecEventChannelAdmin::ConsumerQOS& subscriptions (void) const;
-
- /// Concrete implementations can use this methods to keep track of
- /// the suppliers that publish its events.
- virtual void connected (TAO_EC_ProxyPushConsumer *consumer
- ACE_ENV_ARG_DECL);
- virtual void reconnected (TAO_EC_ProxyPushConsumer *consumer
- ACE_ENV_ARG_DECL);
- virtual void disconnected (TAO_EC_ProxyPushConsumer *consumer
- ACE_ENV_ARG_DECL);
-
- /// Usually implemented as no-ops, but some configurations may
- /// require this methods.
- virtual void connected (TAO_EC_ProxyPushSupplier *supplier
- ACE_ENV_ARG_DECL);
- virtual void reconnected (TAO_EC_ProxyPushSupplier *supplier
- ACE_ENV_ARG_DECL);
- virtual void disconnected (TAO_EC_ProxyPushSupplier *supplier
- ACE_ENV_ARG_DECL);
-
- /// The event channel is shutting down
- virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL);
-
- /// Pushes to the consumer, verifies that it is connected and that it
- /// is not suspended.
- /**
- * These methods take @a consumer argument because during the time
- * the filters have been processing the event, this proxy's consumer
- * may have changed.
- */
- void push_to_consumer (RtecEventComm::PushConsumer_ptr consumer,
- const RtecEventComm::EventSet &event
- ACE_ENV_ARG_DECL);
- void reactive_push_to_consumer (RtecEventComm::PushConsumer_ptr consumer,
- const RtecEventComm::EventSet &event
- ACE_ENV_ARG_DECL);
-
- /**
- * Invoke the _non_existent() pseudo-operation on the consumer. If
- * it is disconnected then it returns true and sets the
- * <disconnected> flag.
- */
- CORBA::Boolean consumer_non_existent (CORBA::Boolean_out disconnected
- ACE_ENV_ARG_DECL);
-
- /// Increment and decrement the reference count.
- CORBA::ULong _incr_refcnt (void);
- CORBA::ULong _decr_refcnt (void);
-
- // = The TAO_EC_Filter methods, only push() is implemented...
- virtual int filter (const RtecEventComm::EventSet &event,
- TAO_EC_QOS_Info& qos_info
- ACE_ENV_ARG_DECL);
- virtual int filter_nocopy (RtecEventComm::EventSet &event,
- TAO_EC_QOS_Info &qos_info
- ACE_ENV_ARG_DECL);
- virtual void push (const RtecEventComm::EventSet &event,
- TAO_EC_QOS_Info& qos_info
- ACE_ENV_ARG_DECL);
- virtual void push_nocopy (RtecEventComm::EventSet &event,
- TAO_EC_QOS_Info &qos_info
- ACE_ENV_ARG_DECL);
- virtual void clear (void);
- virtual CORBA::ULong max_event_size (void) const;
- virtual int can_match (const RtecEventComm::EventHeader &header) const;
- virtual int add_dependencies (const RtecEventComm::EventHeader &header,
- const TAO_EC_QOS_Info &qos_info
- ACE_ENV_ARG_DECL);
-
-protected:
- /// Set the consumer, used by some implementations to change the
- /// policies used when invoking operations on the consumer.
- void consumer (RtecEventComm::PushConsumer_ptr consumer);
- void consumer_i (RtecEventComm::PushConsumer_ptr consumer);
-
- void suspend_connection_i (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
- void resume_connection_i (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
- void suspend_connection_locked (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
- void resume_connection_locked (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException));
-
- /// The private version (without locking) of is_connected().
- CORBA::Boolean is_connected_i (void) const;
-
- /// Release the child and the consumer
- void cleanup_i (void);
-
- /// The Event Channel that owns this object.
- TAO_EC_Event_Channel_Base* event_channel_;
-
- /// The locking strategy.
- ACE_Lock* lock_;
-
- /// The reference count.
- CORBA::ULong refcount_;
-
- /// The consumer....
- RtecEventComm::PushConsumer_var consumer_;
-
- /// Is this consumer suspended?
- CORBA::Boolean suspended_;
-
- /// The subscription and QoS information...
- RtecEventChannelAdmin::ConsumerQOS qos_;
-
- /// Store the default POA.
- PortableServer::POA_var default_POA_;
-
- /// The filter object
- TAO_EC_Filter* child_;
-
- /// Validate the connection to consumer on connect
- int consumer_validate_connection_;
-private:
-
- /// Template method hooks.
- virtual void refcount_zero_hook (void);
- virtual void pre_dispatch_hook (RtecEventComm::EventSet&
- ACE_ENV_ARG_DECL);
- virtual PortableServer::ObjectId
- object_id (ACE_ENV_SINGLE_ARG_DECL)
- ACE_THROW_SPEC ((CORBA::SystemException)) = 0;
-};
-
-TAO_END_VERSIONED_NAMESPACE_DECL
-
-#if defined (__ACE_INLINE__)
-#include "orbsvcs/Event/EC_ProxySupplier.i"
-#endif /* __ACE_INLINE__ */
-
-#include /**/ "ace/post.h"
-
-#endif /* TAO_EC_PROXYSUPPLIER_H */