summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-06-05 01:23:22 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-06-05 01:23:22 +0000
commitfdd99c802badcaa667d54cf2dfe95cd47ef47193 (patch)
tree7939cadf25efa979a429eb2b3908133ecfa26ff2
parenta9e32c8f392ce28b2f5c66f5240c68689b6f9599 (diff)
downloadATCD-fdd99c802badcaa667d54cf2dfe95cd47ef47193.tar.gz
Fri Jun 04 19:47:30 1999 Irfan Pyarali <irfan@cs.wustl.edu>
-rw-r--r--TAO/ChangeLog-99c20
-rw-r--r--TAO/tao/ORB_Core.cpp76
-rw-r--r--TAO/tao/ORB_Core.h16
-rw-r--r--TAO/tao/ORB_Core.i26
-rw-r--r--TAO/tao/Resource_Factory.cpp18
-rw-r--r--TAO/tao/Resource_Factory.h11
-rw-r--r--TAO/tao/default_resource.cpp64
-rw-r--r--TAO/tao/default_resource.h12
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);