Go to the documentation of this file.00001
00002
00003 #include "tao/RTCORBA/RT_Thread_Lane_Resources_Manager.h"
00004
00005 #if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0
00006
00007 ACE_RCSID (RTCORBA,
00008 RT_Thread_Lane_Resources_Manager,
00009 "$Id: RT_Thread_Lane_Resources_Manager.cpp 87953 2009-12-07 09:48:57Z mcorino $")
00010
00011 #include "tao/ORB_Core.h"
00012 #include "tao/ORB_Core_TSS_Resources.h"
00013 #include "tao/Acceptor_Registry.h"
00014 #include "tao/Thread_Lane_Resources.h"
00015 #include "tao/RTCORBA/Thread_Pool.h"
00016 #include "tao/LF_Follower.h"
00017 #include "tao/Leader_Follower.h"
00018
00019 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00020
00021 TAO_RT_Thread_Lane_Resources_Manager::TAO_RT_Thread_Lane_Resources_Manager (TAO_ORB_Core &orb_core)
00022 : TAO_Thread_Lane_Resources_Manager (orb_core),
00023 default_lane_resources_ (0),
00024 tp_manager_ (0)
00025 {
00026
00027 ACE_NEW (this->default_lane_resources_,
00028 TAO_Thread_Lane_Resources (orb_core));
00029
00030
00031 ACE_NEW (this->tp_manager_,
00032 TAO_Thread_Pool_Manager (orb_core));
00033
00034 }
00035
00036 TAO_RT_Thread_Lane_Resources_Manager::~TAO_RT_Thread_Lane_Resources_Manager (void)
00037 {
00038
00039 delete this->default_lane_resources_;
00040
00041
00042 delete this->tp_manager_;
00043 }
00044
00045 int
00046 TAO_RT_Thread_Lane_Resources_Manager::open_default_resources (void)
00047 {
00048 TAO_ORB_Parameters *params =
00049 this->orb_core_->orb_params ();
00050
00051 TAO_EndpointSet endpoint_set;
00052
00053 params->get_endpoint_set (TAO_DEFAULT_LANE, endpoint_set);
00054
00055 bool ignore_address = false;
00056
00057 int const result =
00058 this->default_lane_resources_->open_acceptor_registry (endpoint_set,
00059 ignore_address);
00060
00061 return result;
00062 }
00063
00064 void
00065 TAO_RT_Thread_Lane_Resources_Manager::finalize (void)
00066 {
00067
00068 this->tp_manager_->finalize ();
00069
00070
00071 this->default_lane_resources_->finalize ();
00072 }
00073
00074 void
00075 TAO_RT_Thread_Lane_Resources_Manager::shutdown_reactor (void)
00076 {
00077
00078 this->default_lane_resources_->shutdown_reactor ();
00079
00080
00081 this->tp_manager_->shutdown_reactor ();
00082 }
00083
00084 void
00085 TAO_RT_Thread_Lane_Resources_Manager::close_all_transports (void)
00086 {
00087
00088 this->default_lane_resources_->close_all_transports ();
00089 }
00090
00091 int
00092 TAO_RT_Thread_Lane_Resources_Manager::is_collocated (const TAO_MProfile &mprofile)
00093 {
00094 int result =
00095 this->default_lane_resources_->is_collocated (mprofile);
00096
00097 if (result)
00098 return result;
00099
00100 return this->tp_manager_->is_collocated (mprofile);
00101 }
00102
00103 TAO_Thread_Lane_Resources &
00104 TAO_RT_Thread_Lane_Resources_Manager::lane_resources (void)
00105 {
00106
00107 TAO_ORB_Core_TSS_Resources &tss =
00108 *this->orb_core_->get_tss_resources ();
00109
00110
00111 TAO_Thread_Lane *lane =
00112 static_cast <TAO_Thread_Lane *> (tss.lane_);
00113
00114
00115 if (lane)
00116 return lane->resources ();
00117 else
00118
00119 return *this->default_lane_resources_;
00120 }
00121
00122 TAO_Thread_Lane_Resources &
00123 TAO_RT_Thread_Lane_Resources_Manager::default_lane_resources (void)
00124 {
00125 return *this->default_lane_resources_;
00126 }
00127
00128 TAO_Thread_Pool_Manager &
00129 TAO_RT_Thread_Lane_Resources_Manager::tp_manager (void)
00130 {
00131 return *this->tp_manager_;
00132 }
00133
00134 TAO_Thread_Lane_Resources_Manager *
00135 TAO_RT_Thread_Lane_Resources_Manager_Factory::create_thread_lane_resources_manager (TAO_ORB_Core &core)
00136 {
00137 TAO_Thread_Lane_Resources_Manager *manager = 0;
00138
00139
00140 ACE_NEW_RETURN (manager,
00141 TAO_RT_Thread_Lane_Resources_Manager (core),
00142 0);
00143
00144 return manager;
00145 }
00146
00147 ACE_STATIC_SVC_DEFINE (TAO_RT_Thread_Lane_Resources_Manager_Factory,
00148 ACE_TEXT ("RT_Thread_Lane_Resources_Manager_Factory"),
00149 ACE_SVC_OBJ_T,
00150 &ACE_SVC_NAME (TAO_RT_Thread_Lane_Resources_Manager_Factory),
00151 ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
00152 0)
00153 ACE_FACTORY_DEFINE (TAO_RTCORBA, TAO_RT_Thread_Lane_Resources_Manager_Factory)
00154
00155 TAO_END_VERSIONED_NAMESPACE_DECL
00156
00157 #endif