00001 // -*- C++ -*- 00002 00003 /** 00004 * @file EC_ConsumerControl.h 00005 * 00006 * $Id: EC_ConsumerControl.h 76589 2007-01-25 18:04:11Z elliott_c $ 00007 * 00008 * @author Carlos O'Ryan (coryan@cs.wustl.edu) 00009 * 00010 * Based on previous work by Tim Harrison (harrison@cs.wustl.edu) and 00011 * other members of the DOC group. More details can be found in: 00012 * 00013 * http://doc.ece.uci.edu/~coryan/EC/index.html 00014 */ 00015 00016 #ifndef TAO_EC_CONSUMERCONTROL_H 00017 #define TAO_EC_CONSUMERCONTROL_H 00018 00019 #include /**/ "ace/pre.h" 00020 #include "ace/CORBA_macros.h" 00021 00022 #include /**/ "orbsvcs/Event/event_serv_export.h" 00023 00024 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00025 # pragma once 00026 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00027 00028 #include "tao/orbconf.h" 00029 00030 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00031 00032 class TAO_EC_Event_Channel_Base; 00033 class TAO_EC_ProxyPushSupplier; 00034 00035 namespace CORBA 00036 { 00037 class Environment; 00038 class SystemException; 00039 } 00040 00041 /** 00042 * @class TAO_EC_ConsumerControl 00043 * 00044 * @brief ConsumerControl 00045 * 00046 * Defines the interface for the consumer control strategy. 00047 * This strategy handles misbehaving or failing consumers. 00048 */ 00049 class TAO_RTEvent_Serv_Export TAO_EC_ConsumerControl 00050 { 00051 public: 00052 /// Constructor. 00053 TAO_EC_ConsumerControl (void); 00054 00055 /// Destructor. 00056 virtual ~TAO_EC_ConsumerControl (void); 00057 00058 /// Activate any internal threads or timers used to poll the state of 00059 /// the consumers 00060 virtual int activate (void); 00061 virtual int shutdown (void); 00062 00063 /** 00064 * When pushing an event to the consumer a CORBA::OBJECT_NOT_EXIST 00065 * exception was raised. The only interpretation is that the object 00066 * has been destroyed. The strategy has to (at the very least), 00067 * reclaim all the resources attached to that object. 00068 */ 00069 virtual void consumer_not_exist (TAO_EC_ProxyPushSupplier *proxy); 00070 00071 /// Some system exception was raised while trying to contact the 00072 /// consumer 00073 virtual void system_exception (TAO_EC_ProxyPushSupplier *proxy, 00074 CORBA::SystemException &); 00075 }; 00076 00077 TAO_END_VERSIONED_NAMESPACE_DECL 00078 00079 #include /**/ "ace/post.h" 00080 00081 #endif /* TAO_EC_CONSUMERCONTROL_H */