00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file RT_Thread_Lane_Resources_Manager.h 00006 * 00007 * $Id: RT_Thread_Lane_Resources_Manager.h 78627 2007-06-28 08:50:01Z johnnyw $ 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 with 00062 /// RW connection handlers would need cleanup of transports to wake 00063 /// threads up. 00064 void cleanup_rw_transports (void); 00065 00066 /// Does @a mprofile belong to us? 00067 int is_collocated (const TAO_MProfile &mprofile); 00068 00069 /// @name Accessors 00070 // @{ 00071 00072 TAO_Thread_Lane_Resources &lane_resources (void); 00073 00074 TAO_Thread_Lane_Resources &default_lane_resources (void); 00075 00076 TAO_Thread_Pool_Manager &tp_manager (void); 00077 00078 // @} 00079 00080 protected: 00081 00082 /// Default lane resources. 00083 TAO_Thread_Lane_Resources *default_lane_resources_; 00084 00085 /// Thread Pool Manager. 00086 TAO_Thread_Pool_Manager *tp_manager_; 00087 }; 00088 00089 /** 00090 * @class TAO_RT_Thread_Lane_Resources_Manager_Factory 00091 * 00092 * @brief This class is a factory for managers of thread resources. 00093 * 00094 * \nosubgrouping 00095 * 00096 **/ 00097 class TAO_RTCORBA_Export TAO_RT_Thread_Lane_Resources_Manager_Factory 00098 : public TAO_Thread_Lane_Resources_Manager_Factory 00099 { 00100 public: 00101 00102 /// Factory method. 00103 TAO_Thread_Lane_Resources_Manager *create_thread_lane_resources_manager (TAO_ORB_Core &core); 00104 00105 }; 00106 00107 TAO_END_VERSIONED_NAMESPACE_DECL 00108 00109 ACE_STATIC_SVC_DECLARE_EXPORT (TAO_RTCORBA, TAO_RT_Thread_Lane_Resources_Manager_Factory) 00110 ACE_FACTORY_DECLARE (TAO_RTCORBA, TAO_RT_Thread_Lane_Resources_Manager_Factory) 00111 00112 #endif /* TAO_HAS_CORBA_MESSAGING && TAO_HAS_CORBA_MESSAGING != 0 */ 00113 00114 #include /**/ "ace/post.h" 00115 00116 #endif /* TAO_RT_THREAD_LANE_RESOURCES_MANAGER_H */