diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-06-05 01:23:22 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-06-05 01:23:22 +0000 |
commit | fdd99c802badcaa667d54cf2dfe95cd47ef47193 (patch) | |
tree | 7939cadf25efa979a429eb2b3908133ecfa26ff2 | |
parent | a9e32c8f392ce28b2f5c66f5240c68689b6f9599 (diff) | |
download | ATCD-fdd99c802badcaa667d54cf2dfe95cd47ef47193.tar.gz |
Fri Jun 04 19:47:30 1999 Irfan Pyarali <irfan@cs.wustl.edu>
-rw-r--r-- | TAO/ChangeLog-99c | 20 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.cpp | 76 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.h | 16 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.i | 26 | ||||
-rw-r--r-- | TAO/tao/Resource_Factory.cpp | 18 | ||||
-rw-r--r-- | TAO/tao/Resource_Factory.h | 11 | ||||
-rw-r--r-- | TAO/tao/default_resource.cpp | 64 | ||||
-rw-r--r-- | TAO/tao/default_resource.h | 12 |
8 files changed, 79 insertions, 164 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c index f3ae407ef90..5a947220342 100644 --- a/TAO/ChangeLog-99c +++ b/TAO/ChangeLog-99c @@ -1,3 +1,21 @@ +Fri Jun 04 19:47:30 1999 Irfan Pyarali <irfan@cs.wustl.edu> + + * tao/ORB_Core.cpp + * tao/ORB_Core.h + * tao/ORB_Core.i + * tao/Resource_Factory.cpp + * tao/Resource_Factory.h + * tao/default_resource.cpp + * tao/default_resource.h + + The following changes are related to the rearchitecture of + resource management inside the ORB: + + - Moved the object adapter, root POA, and the thread manager + from the default resources to the ORB Core. + + - Removed the root POA and thread manager set methods. + Fri Jun 4 18:57:02 1999 Jeff Parsons <parsons@cs.wustl.edu> * TAO_IDL/be/be_visitor_array/cdr_op_ci.cpp: Removed incorrect @@ -14,7 +32,7 @@ Fri Jun 04 17:30:00 1999 Chris Gill <cdgill@cs.wustl.edu> performance-tests/Cubit/TAO/IDL_Cubit/collocation_test.dsp performance-tests/Cubit/TAO/IDL_Cubit/server.dsp: added relative paths to projects. - + Fri Jun 04 16:11:30 1999 Nanbor Wang <nanbor@cs.wustl.edu> * Context.{i,cpp}: diff --git a/TAO/tao/ORB_Core.cpp b/TAO/tao/ORB_Core.cpp index c5689137fd5..039df1c4a54 100644 --- a/TAO/tao/ORB_Core.cpp +++ b/TAO/tao/ORB_Core.cpp @@ -41,8 +41,7 @@ TAO_default_environment () // **************************************************************** TAO_ORB_Core::TAO_ORB_Core (const char* orbid) - : thr_mgr_ (0), - connector_registry_ (0), + : connector_registry_ (0), acceptor_registry_ (0), protocol_factories_ (0), root_poa_ (0), @@ -61,10 +60,16 @@ TAO_ORB_Core::TAO_ORB_Core (const char* orbid) // @@ This is not needed since the default server factory, fredk // is staticaly added to the service configurator. opt_for_collocation_ (1), - use_global_collocation_ (1) + use_global_collocation_ (1), + poa_current_ (0), + object_adapter_ (0), + tm_ () { ACE_NEW (this->poa_current_, TAO_POA_Current); + + // Make sure that the thread manager does not wait for threads + this->tm_.wait_on_exit (0); } TAO_ORB_Core::~TAO_ORB_Core (void) @@ -75,6 +80,8 @@ TAO_ORB_Core::~TAO_ORB_Core (void) ACE_OS::free (this->orbid_); delete this->poa_current_; + + delete this->object_adapter_; } int @@ -677,7 +684,6 @@ TAO_ORB_Core::init (int &argc, char *argv[]) -1); this->reactor (trf->get_reactor ()); - this->thr_mgr (trf->get_thr_mgr ()); TAO_Server_Strategy_Factory *ssf = this->server_factory (); @@ -1001,31 +1007,23 @@ TAO_ORB_Core::orb (CORBA::ORB_ptr op) return old_orb; } -TAO_POA * -TAO_ORB_Core::root_poa (TAO_POA *np) -{ - // Shouldn't need to check for ptr validity at this point b/c - // we already did in ::init() - TAO_POA *old_poa = this->root_poa_; - this->root_poa_ = np; - this->root_poa_reference_ = PortableServer::POA::_nil (); - return old_poa; -} - PortableServer::POA_ptr -TAO_ORB_Core::root_poa_reference (CORBA::Environment &TAO_IN_ENV, +TAO_ORB_Core::root_poa_reference (CORBA::Environment &ACE_TRY_ENV, const char *adapter_name, TAO_POA_Manager *poa_manager, const TAO_POA_Policies *policies) { + // @@ Double check?? if (CORBA::is_nil (this->root_poa_reference_.in ())) { - TAO_POA *poa = this->root_poa (adapter_name, + TAO_POA *poa = this->root_poa (ACE_TRY_ENV, + adapter_name, poa_manager, policies); + ACE_CHECK_RETURN (PortableServer::POA::_nil ()); - this->root_poa_reference_ = poa->_this (TAO_IN_ENV); - TAO_CHECK_RETURN (PortableServer::POA::_nil ()); + this->root_poa_reference_ = poa->_this (ACE_TRY_ENV); + ACE_CHECK_RETURN (PortableServer::POA::_nil ()); } return PortableServer::POA::_duplicate (this->root_poa_reference_.in ()); @@ -1050,9 +1048,11 @@ TAO_ORB_Core::inherit_from_parent_thread (TAO_ORB_Core_TSS_Resources *tss_resour void TAO_ORB_Core::create_and_set_root_poa (const char *adapter_name, TAO_POA_Manager *poa_manager, - const TAO_POA_Policies *policies) + const TAO_POA_Policies *policies, + CORBA::Environment &ACE_TRY_ENV) { - CORBA::Environment env; + // @@ Locking?? + TAO_POA *poa = 0; int delete_policies = 0; @@ -1073,21 +1073,33 @@ TAO_ORB_Core::create_and_set_root_poa (const char *adapter_name, } // Construct a new POA - poa = new TAO_POA (adapter_name, - *poa_manager, - *policies, - 0, - this->object_adapter ()->lock (), - this->object_adapter ()->thread_lock (), - *this, - env); + this->root_poa_ = new TAO_POA (adapter_name, + *poa_manager, + *policies, + 0, + this->object_adapter ()->lock (), + this->object_adapter ()->thread_lock (), + *this, + ACE_TRY_ENV); + ACE_CHECK; if (delete_policies) delete root_poa_policies; +} + +TAO_Object_Adapter * +TAO_ORB_Core::object_adapter (void) +{ + // @@ Double check?? + if (this->object_adapter_ == 0) + { + ACE_NEW_RETURN (this->object_adapter_, + TAO_Object_Adapter (this->server_factory ()->active_object_map_creation_parameters (), + *this), + 0); + } - if (env.exception () == 0) - // set the poa in the orbcore instance - this->root_poa (poa); + return this->object_adapter_; } int diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h index 1e14adcd7b1..fb97dd687ce 100644 --- a/TAO/tao/ORB_Core.h +++ b/TAO/tao/ORB_Core.h @@ -100,12 +100,11 @@ public: ACE_Reactor *reactor (void); // = Set/get the <ACE_Thread_Manager>. - ACE_Thread_Manager *thr_mgr (ACE_Thread_Manager *tm); ACE_Thread_Manager *thr_mgr (void); // = Set/get <rootPOA>. - TAO_POA *root_poa (TAO_POA *np); - TAO_POA *root_poa (const char *adapter_name = TAO_DEFAULT_ROOTPOA_NAME, + TAO_POA *root_poa (CORBA::Environment &TAO_IN_ENV = TAO_default_environment (), + const char *adapter_name = TAO_DEFAULT_ROOTPOA_NAME, TAO_POA_Manager *poa_manager = 0, const TAO_POA_Policies *policies = 0); PortableServer::POA_ptr root_poa_reference (CORBA::Environment &TAO_IN_ENV = TAO_default_environment (), @@ -279,13 +278,12 @@ protected: void create_and_set_root_poa (const char *adapter_name, TAO_POA_Manager *poa_manager, - const TAO_POA_Policies *policies); + const TAO_POA_Policies *policies, + CORBA::Environment &TAO_IN_ENV); // Initialize the root POA. protected: // = Data members. - ACE_Thread_Manager *thr_mgr_; - // Used to manage threads within the ORB TAO_Connector_Registry *connector_registry_; // The connector registry which all active connecters must register @@ -370,6 +368,12 @@ protected: // Note that this is a pointer in order to reduce the include file // dependencies. // + + TAO_Object_Adapter *object_adapter_; + // Object Adapter. + + ACE_Thread_Manager tm_; + // The Thread Manager }; // **************************************************************** diff --git a/TAO/tao/ORB_Core.i b/TAO/tao/ORB_Core.i index aae32c56efe..4974f54e316 100644 --- a/TAO/tao/ORB_Core.i +++ b/TAO/tao/ORB_Core.i @@ -3,28 +3,13 @@ #include "ace/Dynamic_Service.h" -#define TAO_TRF (this->resource_factory ()) #define TAO_OC_RETRIEVE(member) \ ((this->member##_ == 0) ? (this->member##_ = this->resource_factory ()->get_##member ()) : (this->member##_) ) -ACE_INLINE TAO_Object_Adapter * -TAO_ORB_Core::object_adapter (void) -{ - return this->resource_factory ()->object_adapter (); -} - ACE_INLINE ACE_Thread_Manager * -TAO_ORB_Core::thr_mgr (ACE_Thread_Manager *tm) -{ - ACE_Thread_Manager *old_thr_mgr = this->thr_mgr_; - this->thr_mgr_ = tm; - return old_thr_mgr; -} - -ACE_INLINE ACE_Thread_Manager* TAO_ORB_Core::thr_mgr (void) { - return TAO_OC_RETRIEVE (thr_mgr); + return &this->tm_; } ACE_INLINE CORBA::ORB_ptr @@ -34,14 +19,16 @@ TAO_ORB_Core::orb (void) } ACE_INLINE TAO_POA * -TAO_ORB_Core::root_poa (const char *adapter_name, +TAO_ORB_Core::root_poa (CORBA::Environment &ACE_TRY_ENV, + const char *adapter_name, TAO_POA_Manager *poa_manager, const TAO_POA_Policies *policies) { - if (TAO_OC_RETRIEVE (root_poa) == 0) + if (this->root_poa_ == 0) this->create_and_set_root_poa (adapter_name, poa_manager, - policies); + policies, + ACE_TRY_ENV); return this->root_poa_; } @@ -133,7 +120,6 @@ TAO_ORB_Core::acceptor_registry (void) } #undef TAO_OC_RETRIEVE -#undef TAO_TRF ACE_INLINE ACE_Data_Block* TAO_ORB_Core::create_input_cdr_data_block (size_t size) diff --git a/TAO/tao/Resource_Factory.cpp b/TAO/tao/Resource_Factory.cpp index 50d3728b1d9..0b9995f36f7 100644 --- a/TAO/tao/Resource_Factory.cpp +++ b/TAO/tao/Resource_Factory.cpp @@ -61,12 +61,6 @@ TAO_Resource_Factory::get_reactor (void) return 0; } -ACE_Thread_Manager * -TAO_Resource_Factory::get_thr_mgr (void) -{ - return 0; -} - TAO_Connector_Registry * TAO_Resource_Factory::get_connector_registry (void) { @@ -79,18 +73,6 @@ TAO_Resource_Factory::get_acceptor_registry (void) return 0; } -TAO_POA * -TAO_Resource_Factory::get_root_poa (void) -{ - return 0; -} - -TAO_Object_Adapter * -TAO_Resource_Factory::object_adapter (void) -{ - return 0; -} - ACE_Allocator * TAO_Resource_Factory::input_cdr_dblock_allocator (void) { diff --git a/TAO/tao/Resource_Factory.h b/TAO/tao/Resource_Factory.h index 6fcaa9bd448..4c2eb55628f 100644 --- a/TAO/tao/Resource_Factory.h +++ b/TAO/tao/Resource_Factory.h @@ -31,8 +31,6 @@ #include "tao/orbconf.h" #include "ace/Containers_T.h" -class TAO_POA; -class TAO_Object_Adapter; class TAO_Acceptor_Registry; class TAO_Connector_Registry; @@ -104,21 +102,12 @@ public: virtual ACE_Reactor *get_reactor (void); // Return an <ACE_Reactor> to be utilized. - virtual ACE_Thread_Manager *get_thr_mgr (void); - // Return an <ACE_Thread_Manager> to be utilized. - virtual TAO_Acceptor_Registry *get_acceptor_registry (void); // return a reference to the acceptor registry. virtual TAO_Connector_Registry *get_connector_registry (void); // Return an Connector to be utilized. - virtual TAO_POA *get_root_poa (void); - // Return a root poa to be utilized. - - virtual TAO_Object_Adapter *object_adapter (void); - // Return a object adapter to be utilized. - virtual ACE_Allocator* input_cdr_dblock_allocator (void); virtual ACE_Allocator* input_cdr_buffer_allocator (void); // Access the input CDR allocators. diff --git a/TAO/tao/default_resource.cpp b/TAO/tao/default_resource.cpp index 2edf9194977..d6f302f13bb 100644 --- a/TAO/tao/default_resource.cpp +++ b/TAO/tao/default_resource.cpp @@ -318,21 +318,6 @@ TAO_Default_Resource_Factory::get_protocol_factories (void) return &protocol_factories_; } -#define IMPLEMENT_GET_METHOD(methodname,rtype,membername)\ -rtype TAO_Default_Resource_Factory::methodname(void)\ -{\ - switch (resource_source_)\ - {\ - case TAO_GLOBAL:\ - return &GLOBAL_ALLOCATED::instance ()->membername;\ - case TAO_TSS:\ - return &TSS_ALLOCATED::instance ()->membername;\ - }\ - return 0;\ -} - -IMPLEMENT_GET_METHOD(get_thr_mgr, ACE_Thread_Manager *, tm_) - TAO_Acceptor_Registry* TAO_Default_Resource_Factory::get_acceptor_registry (void) { @@ -418,49 +403,6 @@ TAO_Default_Resource_Factory::get_reactor (void) return 0; } -TAO_Object_Adapter * -TAO_Default_Resource_Factory::object_adapter (void) -{ - // @@ Remove this use of ORB_Core_instance() from here!!!! - switch (this->resource_source_) - { - case TAO_GLOBAL: - if (GLOBAL_ALLOCATED::instance ()->object_adapter_ == 0) - { - TAO_ORB_Core &orb_core = *TAO_ORB_Core_instance (); - ACE_NEW_RETURN (GLOBAL_ALLOCATED::instance ()->object_adapter_, - TAO_Object_Adapter (orb_core.server_factory ()->active_object_map_creation_parameters (), orb_core), - 0); - } - return GLOBAL_ALLOCATED::instance ()->object_adapter_; - ACE_NOTREACHED (break); - case TAO_TSS: - if (TSS_ALLOCATED::instance ()->object_adapter_ == 0) - { - TAO_ORB_Core &orb_core = *TAO_ORB_Core_instance (); - ACE_NEW_RETURN (TSS_ALLOCATED::instance ()->object_adapter_, - TAO_Object_Adapter (orb_core.server_factory ()->active_object_map_creation_parameters (), orb_core), - 0); - } - return TSS_ALLOCATED::instance ()->object_adapter_; - ACE_NOTREACHED (break); - } - return 0; -} - -TAO_POA * -TAO_Default_Resource_Factory::get_root_poa (void) -{ - switch (poa_source_) - { - case TAO_GLOBAL: - return GLOBAL_ALLOCATED::instance ()->poa_; - case TAO_TSS: - return TSS_ALLOCATED::instance ()->poa_; - } - return 0; -} - typedef ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_Null_Mutex> TSS_MALLOC; typedef ACE_Allocator_Adapter<TSS_MALLOC> TSS_ALLOCATOR; @@ -606,15 +548,11 @@ TAO_Default_Resource_Factory::create_input_cdr_data_block (size_t size) TAO_Allocated_Resources::TAO_Allocated_Resources (void) : r_ (0), - object_adapter_ (0), - poa_(0), input_cdr_dblock_allocator_ (0), input_cdr_buffer_allocator_ (0), output_cdr_dblock_allocator_ (0), output_cdr_buffer_allocator_ (0) { - // Make sure that the thread manager does not wait for threads - this->tm_.wait_on_exit (0); } TAO_Allocated_Resources::~TAO_Allocated_Resources (void) @@ -635,8 +573,6 @@ TAO_Allocated_Resources::~TAO_Allocated_Resources (void) this->output_cdr_buffer_allocator_->remove (); delete this->output_cdr_buffer_allocator_; - delete this->object_adapter_; - delete this->r_; } diff --git a/TAO/tao/default_resource.h b/TAO/tao/default_resource.h index 5fe8b29dd5f..f201a4640b8 100644 --- a/TAO/tao/default_resource.h +++ b/TAO/tao/default_resource.h @@ -54,9 +54,6 @@ public: // = Resources - ACE_Thread_Manager tm_; - // The Thread Manager - TAO_Acceptor_Registry ar_; // The Acceptor Registry! @@ -66,12 +63,6 @@ public: ACE_Reactor *r_; // The Reactor. - TAO_Object_Adapter *object_adapter_; - // Object Adapter. - - TAO_POA *poa_; - // Pointer to application-created POA. - ACE_Allocator *input_cdr_dblock_allocator_; ACE_Allocator *input_cdr_buffer_allocator_; // The allocators for the input CDR streams. @@ -143,11 +134,8 @@ public: // = Resource Retrieval virtual ACE_Reactor *get_reactor (void); - virtual ACE_Thread_Manager *get_thr_mgr (void); virtual TAO_Acceptor_Registry *get_acceptor_registry (void); virtual TAO_Connector_Registry *get_connector_registry (void); - virtual TAO_POA *get_root_poa (void); - virtual TAO_Object_Adapter *object_adapter (void); virtual ACE_Allocator* input_cdr_dblock_allocator (void); virtual ACE_Allocator* input_cdr_buffer_allocator (void); virtual ACE_Allocator* output_cdr_dblock_allocator (void); |