diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h deleted file mode 100644 index 141ddf9668c..00000000000 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h +++ /dev/null @@ -1,166 +0,0 @@ -// -*- C++ -*- - -/** - * @file EC_Reactive_SupplierControl.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_REACTIVE_SUPPLIERCONTROL_H -#define TAO_EC_REACTIVE_SUPPLIERCONTROL_H - -#include /**/ "ace/pre.h" - -#include "orbsvcs/Event/EC_SupplierControl.h" - -#include "orbsvcs/ESF/ESF_Worker.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "tao/ORB.h" -#include "tao/PolicyC.h" - -#include "ace/Event_Handler.h" - -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - -class TAO_EC_Event_Channel_Base; - -class TAO_EC_Reactive_SupplierControl; - -/** - * @class TAO_EC_SupplierControl_Adapter - * - * @brief Forwards timeout events to the Reactive SupplierControl - * - * The Reactive SupplierControl strategy uses the reactor to - * periodically wakeup and verify the state of the suppliers - * registered with the Event Channel. - * - * @todo Marina Spivak made the following observation: these classes - * and implementation seem nearly identical to those in - * EC_Reactive_ConsumerControl.* The only differences are using - * consumer_admin collection vs supplier_admin, and calling - * disconnect_push_consumer vs disconnect_push_supplier ... Seems - * like it may be a good idea to change some naming and templatize... - * @todo The same templates should be used for the Notification and - * COS Event services. - * - */ -class TAO_RTEvent_Serv_Export TAO_EC_SupplierControl_Adapter : public ACE_Event_Handler -{ -public: - /// Constructor - TAO_EC_SupplierControl_Adapter (TAO_EC_Reactive_SupplierControl *adaptee); - - // = Documented in ACE_Event_Handler. - virtual int handle_timeout (const ACE_Time_Value &tv, - const void *arg = 0); - -private: - /// The adapted object - TAO_EC_Reactive_SupplierControl *adaptee_; -}; - -/** - * @class TAO_EC_Reactive_SupplierControl - * - * @brief SupplierControl - * - * Defines the interface for the supplier control strategy. - * This strategy handles misbehaving or failing suppliers. - */ -class TAO_RTEvent_Serv_Export TAO_EC_Reactive_SupplierControl : public TAO_EC_SupplierControl -{ -public: - /// Constructor. It does not assume ownership of the @a event_channel - /// parameter. - TAO_EC_Reactive_SupplierControl (const ACE_Time_Value &rate, - const ACE_Time_Value &timeout, - TAO_EC_Event_Channel_Base *event_channel, - CORBA::ORB_ptr orb); - - /// Destructor. - virtual ~TAO_EC_Reactive_SupplierControl (void); - - /// Receive the timeout from the adapter - void handle_timeout (const ACE_Time_Value &tv, - const void* arg); - - // = Documented in TAO_EC_SupplierControl - virtual int activate (void); - virtual int shutdown (void); - virtual void supplier_not_exist (TAO_EC_ProxyPushConsumer *proxy - ACE_ENV_ARG_DECL_NOT_USED); - virtual void system_exception (TAO_EC_ProxyPushConsumer *proxy, - CORBA::SystemException & - ACE_ENV_ARG_DECL_NOT_USED); - -private: - /// Check if the suppliers still exists. It is a helper method for - /// handle_timeout() to isolate the exceptions. - void query_suppliers (ACE_ENV_SINGLE_ARG_DECL); - -private: - /// The polling rate - ACE_Time_Value rate_; - - /// The polling timeout - ACE_Time_Value timeout_; - - /// The Adapter for the reactor events - TAO_EC_SupplierControl_Adapter adapter_; - - /// The event channel - TAO_EC_Event_Channel_Base *event_channel_; - - /// The ORB - CORBA::ORB_var orb_; - - /// To control the timeout policy in the thread - CORBA::PolicyCurrent_var policy_current_; - - /// Precomputed policy list to the set timeout. - CORBA::PolicyList policy_list_; - - /// The ORB reactor - ACE_Reactor *reactor_; - -#if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0 - /// The timer id - long timer_id_; -#endif /* TAO_HAS_CORBA_MESSAGING */ -}; - -// **************************************************************** - -class TAO_EC_Ping_Supplier : public TAO_ESF_Worker<TAO_EC_ProxyPushConsumer> -{ -public: - TAO_EC_Ping_Supplier (TAO_EC_SupplierControl *control); - - virtual void work (TAO_EC_ProxyPushConsumer *consumer - ACE_ENV_ARG_DECL); - -private: - TAO_EC_SupplierControl *control_; -}; - -TAO_END_VERSIONED_NAMESPACE_DECL - -#if defined (__ACE_INLINE__) -#include "orbsvcs/Event/EC_Reactive_SupplierControl.i" -#endif /* __ACE_INLINE__ */ - -#include /**/ "ace/post.h" - -#endif /* TAO_EC_SUPPLIERCONTROL_H */ |