00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file RT_Thread_Lane_Resources_Manager.h 00006 * 00007 * $Id: RT_Thread_Lane_Resources_Manager.h 87953 2009-12-07 09:48:57Z mcorino $ 00008 * 00009 * @author Irfan Pyarali 00010 */ 00011 // =================================================================== 00012 00013 #ifndef TAO_RT_THREAD_LANE_RESOURCES_MANAGER_H 00014 #define TAO_RT_THREAD_LANE_RESOURCES_MANAGER_H 00015 00016 #include /**/ "ace/pre.h" 00017 #include "tao/orbconf.h" 00018 00019 #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 # pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 #include "tao/RTCORBA/rtcorba_export.h" 00026 #include "tao/Thread_Lane_Resources_Manager.h" 00027 #include "ace/Service_Config.h" 00028 00029 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00030 00031 class TAO_Thread_Pool_Manager; 00032 00033 /** 00034 * @class TAO_RT_Thread_Lane_Resources_Manager 00035 * 00036 * @brief Manager for thread lane resources. 00037 * 00038 * \nosubgrouping 00039 * 00040 **/ 00041 class TAO_RTCORBA_Export TAO_RT_Thread_Lane_Resources_Manager : 00042 public TAO_Thread_Lane_Resources_Manager 00043 { 00044 public: 00045 00046 /// Constructor. 00047 TAO_RT_Thread_Lane_Resources_Manager (TAO_ORB_Core &orb_core); 00048 00049 /// Destructor. 00050 ~TAO_RT_Thread_Lane_Resources_Manager (void); 00051 00052 /// Finalize resources. 00053 void finalize (void); 00054 00055 /// Open default resources. 00056 int open_default_resources (void); 00057 00058 /// Shutdown reactor. 00059 void shutdown_reactor (void); 00060 00061 /// Certain ORB policies such as dropping replies on shutdown 00062 /// would need cleanup of transports to wake threads up. 00063 void close_all_transports (void); 00064 00065 /// Does @a mprofile belong to us? 00066 int is_collocated (const TAO_MProfile &mprofile); 00067 00068 /// @name Accessors 00069 // @{ 00070 00071 TAO_Thread_Lane_Resources &lane_resources (void); 00072 00073 TAO_Thread_Lane_Resources &default_lane_resources (void); 00074 00075 TAO_Thread_Pool_Manager &tp_manager (void); 00076 00077 // @} 00078 00079 private: 00080 void operator= (const TAO_RT_Thread_Lane_Resources_Manager &); 00081 TAO_RT_Thread_Lane_Resources_Manager (const TAO_RT_Thread_Lane_Resources_Manager &); 00082 00083 protected: 00084 00085 /// Default lane resources. 00086 TAO_Thread_Lane_Resources *default_lane_resources_; 00087 00088 /// Thread Pool Manager. 00089 TAO_Thread_Pool_Manager *tp_manager_; 00090 }; 00091 00092 /** 00093 * @class TAO_RT_Thread_Lane_Resources_Manager_Factory 00094 * 00095 * @brief This class is a factory for managers of thread resources. 00096 * 00097 * \nosubgrouping 00098 * 00099 **/ 00100 class TAO_RTCORBA_Export TAO_RT_Thread_Lane_Resources_Manager_Factory 00101 : public TAO_Thread_Lane_Resources_Manager_Factory 00102 { 00103 public: 00104 00105 /// Factory method. 00106 TAO_Thread_Lane_Resources_Manager *create_thread_lane_resources_manager (TAO_ORB_Core &core); 00107 00108 }; 00109 00110 00111 00112 ACE_STATIC_SVC_DECLARE_EXPORT (TAO_RTCORBA, TAO_RT_Thread_Lane_Resources_Manager_Factory) 00113 ACE_FACTORY_DECLARE (TAO_RTCORBA, TAO_RT_Thread_Lane_Resources_Manager_Factory) 00114 00115 TAO_END_VERSIONED_NAMESPACE_DECL 00116 00117 #endif /* TAO_HAS_CORBA_MESSAGING && TAO_HAS_CORBA_MESSAGING != 0 */ 00118 00119 #include /**/ "ace/post.h" 00120 00121 #endif /* TAO_RT_THREAD_LANE_RESOURCES_MANAGER_H */