00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Thread_Lane_Resources_Manager.h 00006 * 00007 * $Id: Thread_Lane_Resources_Manager.h 87953 2009-12-07 09:48:57Z mcorino $ 00008 * 00009 * @author Irfan Pyarali 00010 */ 00011 // ============================================================================ 00012 00013 #ifndef TAO_THREAD_LANE_RESOURCES_MANAGER_H 00014 #define TAO_THREAD_LANE_RESOURCES_MANAGER_H 00015 00016 #include /**/ "ace/pre.h" 00017 #include "ace/Service_Object.h" 00018 00019 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00020 # pragma once 00021 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00022 00023 #include /**/ "tao/TAO_Export.h" 00024 #include /**/ "tao/Versioned_Namespace.h" 00025 00026 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00027 00028 class TAO_ORB_Core; 00029 class TAO_Thread_Lane_Resources; 00030 class TAO_LF_Strategy; 00031 class TAO_MProfile; 00032 00033 /** 00034 * @class TAO_Thread_Lane_Resources_Manager 00035 * 00036 * @brief This class is a manager for thread resources. 00037 * 00038 * \nosubgrouping 00039 * 00040 **/ 00041 class TAO_Export TAO_Thread_Lane_Resources_Manager 00042 { 00043 public: 00044 /// Constructor. 00045 TAO_Thread_Lane_Resources_Manager (TAO_ORB_Core &orb_core); 00046 00047 /// Destructor. 00048 virtual ~TAO_Thread_Lane_Resources_Manager (void); 00049 00050 /// Finalize resources. 00051 virtual void finalize (void) = 0; 00052 00053 /// Open default resources. 00054 virtual int open_default_resources (void) = 0; 00055 00056 /// Shutdown reactor. 00057 virtual void shutdown_reactor (void) = 0; 00058 00059 /// Cleanup transports to wake threads up waiting on those sockets. 00060 virtual void close_all_transports (void) = 0; 00061 00062 /// Does @a mprofile belong to us? 00063 virtual int is_collocated (const TAO_MProfile& mprofile) = 0; 00064 00065 /// @name Accessors 00066 // @{ 00067 virtual TAO_Thread_Lane_Resources &lane_resources (void) = 0; 00068 00069 virtual TAO_Thread_Lane_Resources &default_lane_resources (void) = 0; 00070 00071 TAO_LF_Strategy &lf_strategy (void); 00072 // @} 00073 00074 private: 00075 void operator= (const TAO_Thread_Lane_Resources_Manager &); 00076 TAO_Thread_Lane_Resources_Manager (const TAO_Thread_Lane_Resources_Manager &); 00077 00078 protected: 00079 /// The ORB Core. 00080 TAO_ORB_Core * const orb_core_; 00081 00082 /// The leader follower strategy 00083 TAO_LF_Strategy *lf_strategy_; 00084 }; 00085 00086 /** 00087 * @class TAO_Thread_Lane_Resources_Manager_Factory 00088 * 00089 * @brief This class is a factory for managers of thread resources. 00090 * 00091 * \nosubgrouping 00092 * 00093 **/ 00094 class TAO_Export TAO_Thread_Lane_Resources_Manager_Factory 00095 : public ACE_Service_Object 00096 { 00097 public: 00098 00099 /// Virtual destructor. 00100 virtual ~TAO_Thread_Lane_Resources_Manager_Factory (void); 00101 00102 /// Factory method. 00103 virtual TAO_Thread_Lane_Resources_Manager * 00104 create_thread_lane_resources_manager (TAO_ORB_Core &core) = 0; 00105 00106 }; 00107 00108 TAO_END_VERSIONED_NAMESPACE_DECL 00109 00110 00111 #include /**/ "ace/post.h" 00112 00113 #endif /* TAO_THREAD_LANE_RESOURCES_MANAGER_H */