00001 // -*- C++ -*- 00002 /** 00003 * @file EC_RTCORBA_Factory.h 00004 * 00005 * EC_RTCORBA_Factory.h,v 1.7 2006/03/14 06:14:25 jtc Exp 00006 * 00007 * @author Carlos O'Ryan (coryan@cs.wustl.edu) 00008 * 00009 * Based on previous work by Tim Harrison (harrison@cs.wustl.edu) and 00010 * other members of the DOC group. More details can be found in: 00011 * 00012 * http://doc.ece.uci.edu/~coryan/EC/index.html 00013 */ 00014 00015 #ifndef TAO_EC_RTCORBA_FACTORY_H 00016 #define TAO_EC_RTCORBA_FACTORY_H 00017 #include /**/ "ace/pre.h" 00018 00019 #include "orbsvcs/Event/rtcorba_event_export.h" 00020 #include "orbsvcs/Event/EC_Factory.h" 00021 #include "tao/RTCORBA/RTCORBA.h" 00022 00023 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00024 # pragma once 00025 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00026 00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00028 00029 /** 00030 * @class TAO_EC_RTCORBA_Factory 00031 * 00032 * @brief Decorate an EC_Factory to use the EC_RTCORBA_Dispatching 00033 * module. 00034 */ 00035 class TAO_RTCORBAEvent_Export TAO_EC_RTCORBA_Factory : public TAO_EC_Factory 00036 { 00037 public: 00038 /// Constructor 00039 /** 00040 * @param body The decorated factory. 00041 */ 00042 TAO_EC_RTCORBA_Factory (TAO_EC_Factory *body, 00043 const RTCORBA::ThreadpoolLanes &lanes); 00044 00045 /// destructor... 00046 virtual ~TAO_EC_RTCORBA_Factory (void); 00047 00048 // Decorated methods... 00049 virtual int init (int argc, char* argv[]); 00050 virtual int fini (void); 00051 virtual TAO_EC_Dispatching* 00052 create_dispatching (TAO_EC_Event_Channel_Base*); 00053 virtual void 00054 destroy_dispatching (TAO_EC_Dispatching*) ; 00055 virtual TAO_EC_Filter_Builder* 00056 create_filter_builder (TAO_EC_Event_Channel_Base*) ; 00057 virtual void 00058 destroy_filter_builder (TAO_EC_Filter_Builder*); 00059 virtual TAO_EC_Supplier_Filter_Builder* 00060 create_supplier_filter_builder (TAO_EC_Event_Channel_Base*) ; 00061 virtual void 00062 destroy_supplier_filter_builder (TAO_EC_Supplier_Filter_Builder*); 00063 virtual TAO_EC_ConsumerAdmin* 00064 create_consumer_admin (TAO_EC_Event_Channel_Base*) ; 00065 virtual void 00066 destroy_consumer_admin (TAO_EC_ConsumerAdmin*); 00067 virtual TAO_EC_SupplierAdmin* 00068 create_supplier_admin (TAO_EC_Event_Channel_Base*) ; 00069 virtual void 00070 destroy_supplier_admin (TAO_EC_SupplierAdmin*); 00071 virtual TAO_EC_ProxyPushSupplier* 00072 create_proxy_push_supplier (TAO_EC_Event_Channel_Base*); 00073 virtual void 00074 destroy_proxy_push_supplier (TAO_EC_ProxyPushSupplier*); 00075 virtual TAO_EC_ProxyPushConsumer* 00076 create_proxy_push_consumer (TAO_EC_Event_Channel_Base*); 00077 virtual void 00078 destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer*); 00079 virtual TAO_EC_Timeout_Generator* 00080 create_timeout_generator (TAO_EC_Event_Channel_Base*) ; 00081 virtual void 00082 destroy_timeout_generator (TAO_EC_Timeout_Generator*); 00083 virtual TAO_EC_ObserverStrategy* 00084 create_observer_strategy (TAO_EC_Event_Channel_Base*); 00085 virtual void 00086 destroy_observer_strategy (TAO_EC_ObserverStrategy*); 00087 virtual TAO_EC_Scheduling_Strategy* 00088 create_scheduling_strategy (TAO_EC_Event_Channel_Base*); 00089 virtual void 00090 destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy*); 00091 virtual TAO_EC_ProxyPushConsumer_Collection* 00092 create_proxy_push_consumer_collection (TAO_EC_Event_Channel_Base*); 00093 virtual void 00094 destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection*); 00095 virtual TAO_EC_ProxyPushSupplier_Collection* 00096 create_proxy_push_supplier_collection (TAO_EC_Event_Channel_Base*); 00097 virtual void 00098 destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection*); 00099 virtual ACE_Lock* create_consumer_lock (void); 00100 virtual void destroy_consumer_lock (ACE_Lock*); 00101 virtual ACE_Lock* create_supplier_lock (void); 00102 virtual void destroy_supplier_lock (ACE_Lock*); 00103 virtual TAO_EC_ConsumerControl* 00104 create_consumer_control (TAO_EC_Event_Channel_Base*); 00105 virtual void 00106 destroy_consumer_control (TAO_EC_ConsumerControl*); 00107 virtual TAO_EC_SupplierControl* 00108 create_supplier_control (TAO_EC_Event_Channel_Base*); 00109 virtual void 00110 destroy_supplier_control (TAO_EC_SupplierControl*); 00111 00112 protected: 00113 /// The decorated factory 00114 TAO_EC_Factory *body_; 00115 00116 /// Configure the thread pool lanes. 00117 RTCORBA::ThreadpoolLanes lanes_; 00118 }; 00119 00120 TAO_END_VERSIONED_NAMESPACE_DECL 00121 00122 #include /**/ "ace/post.h" 00123 #endif /* TAO_EC_RTCORBA_FACTORY_H */