diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-06-18 01:37:51 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-06-18 01:37:51 +0000 |
commit | 47105676527e6bf611fdd50c36c6f5deff7315fc (patch) | |
tree | 191e75329bb67b96f23557c3784aaeeb54ac5e86 /TAO/tao/default_resource.cpp | |
parent | 33a7a2b2533ce57996106bf1bc0c539b9f0e2cb1 (diff) | |
download | ATCD-47105676527e6bf611fdd50c36c6f5deff7315fc.tar.gz |
ChangeLogTag:Thu Jun 17 19:38:57 1999 Irfan Pyarali <irfan@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/default_resource.cpp')
-rw-r--r-- | TAO/tao/default_resource.cpp | 205 |
1 files changed, 63 insertions, 142 deletions
diff --git a/TAO/tao/default_resource.cpp b/TAO/tao/default_resource.cpp index 53a22c2a98e..b01ba111060 100644 --- a/TAO/tao/default_resource.cpp +++ b/TAO/tao/default_resource.cpp @@ -27,8 +27,9 @@ ACE_RCSID(tao, default_resource, "$Id$") TAO_Default_Resource_Factory::TAO_Default_Resource_Factory (void) : use_tss_resources_ (0), + use_locked_data_blocks_ (1), reactor_type_ (TAO_REACTOR_SELECT_MT), - cdr_allocator_source_ (TAO_GLOBAL) + cdr_allocator_type_ (TAO_ALLOCATOR_THREAD_LOCK) { } @@ -102,7 +103,7 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) "select_st") == 0) reactor_type_ = TAO_REACTOR_SELECT_ST; else if (ACE_OS::strcasecmp (name, - "fl_reactor") == 0) + "fl") == 0) #if defined(ACE_HAS_FL) reactor_type_ = TAO_REACTOR_FL; #else @@ -111,7 +112,7 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) " not supported on this platform\n")); #endif /* ACE_HAS_FL */ else if (ACE_OS::strcasecmp (name, - "xt_reactor") == 0) + "xt") == 0) #if defined(ACE_HAS_XT) reactor_type_ = TAO_REACTOR_XT; #else @@ -120,7 +121,7 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) " not supported on this platform\n")); #endif /* ACE_HAS_XT */ else if (ACE_OS::strcasecmp (name, - "WFMO") == 0) + "wfmo") == 0) #if defined(ACE_WIN32) reactor_type_ = TAO_REACTOR_WFMO; #else @@ -129,7 +130,7 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) " not supported on this platform\n")); #endif /* ACE_WIN32 */ else if (ACE_OS::strcasecmp (name, - "MsgWFMO") == 0) + "msg_wfmo") == 0) #if defined(ACE_WIN32) reactor_type_ = TAO_REACTOR_MSGWFMO; #else @@ -139,7 +140,7 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) #endif /* ACE_WIN32 */ else if (ACE_OS::strcasecmp (name, - "ThreadPool") == 0) + "tp") == 0) reactor_type_ = TAO_REACTOR_TP; else ACE_DEBUG ((LM_DEBUG, @@ -157,13 +158,20 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) char *name = argv[curarg]; if (ACE_OS::strcasecmp (name, - "global") == 0) - this->cdr_allocator_source_ = TAO_GLOBAL; + "null") == 0) + { + this->cdr_allocator_type_ = TAO_ALLOCATOR_NULL_LOCK; + this->use_locked_data_blocks_ = 0; + } else if (ACE_OS::strcasecmp (name, - "tss") == 0) - this->cdr_allocator_source_ = TAO_TSS; + "thread") == 0) + { + this->cdr_allocator_type_ = TAO_ALLOCATOR_THREAD_LOCK; + this->use_locked_data_blocks_ = 1; + } } } + else if (ACE_OS::strcasecmp (argv[curarg], "-ORBProtocolFactory") == 0) { @@ -284,6 +292,12 @@ TAO_Default_Resource_Factory::use_tss_resources (void) const return this->use_tss_resources_; } +int +TAO_Default_Resource_Factory::use_locked_data_blocks (void) const +{ + return this->use_locked_data_blocks_; +} + TAO_ProtocolFactorySet * TAO_Default_Resource_Factory::get_protocol_factories (void) { @@ -362,69 +376,63 @@ TAO_Default_Resource_Factory::get_reactor (void) return reactor; } -typedef ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_Null_Mutex> TSS_MALLOC; -typedef ACE_Allocator_Adapter<TSS_MALLOC> TSS_ALLOCATOR; +typedef ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_Null_Mutex> NULL_LOCK_MALLOC; +typedef ACE_Allocator_Adapter<NULL_LOCK_MALLOC> NULL_LOCK_ALLOCATOR; -typedef ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_SYNCH_MUTEX> GBL_MALLOC; -typedef ACE_Allocator_Adapter<GBL_MALLOC> GBL_ALLOCATOR; +typedef ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_SYNCH_MUTEX> LOCKED_MALLOC; +typedef ACE_Allocator_Adapter<LOCKED_MALLOC> LOCKED_ALLOCATOR; -ACE_Allocator* +ACE_Allocator * TAO_Default_Resource_Factory::input_cdr_dblock_allocator (void) { - switch (this->cdr_allocator_source_) + ACE_Allocator *allocator = 0; + switch (this->cdr_allocator_type_) { - case TAO_GLOBAL: - if (GLOBAL_ALLOCATED::instance ()->input_cdr_dblock_allocator_ == 0) - { - ACE_NEW_RETURN (GLOBAL_ALLOCATED::instance ()->input_cdr_dblock_allocator_, - GBL_ALLOCATOR, - 0); - } - return GLOBAL_ALLOCATED::instance ()->input_cdr_dblock_allocator_; - ACE_NOTREACHED (break); - case TAO_TSS: - if (TSS_ALLOCATED::instance ()->input_cdr_dblock_allocator_ == 0) - { - ACE_NEW_RETURN (TSS_ALLOCATED::instance ()->input_cdr_dblock_allocator_, - TSS_ALLOCATOR, - 0); - } - return TSS_ALLOCATED::instance ()->input_cdr_dblock_allocator_; - ACE_NOTREACHED (break); + case TAO_ALLOCATOR_NULL_LOCK: + ACE_NEW_RETURN (allocator, + NULL_LOCK_ALLOCATOR, + 0); + break; + + case TAO_ALLOCATOR_THREAD_LOCK: + default: + ACE_NEW_RETURN (allocator, + LOCKED_ALLOCATOR, + 0); + break; } - return 0; + + return allocator; } ACE_Allocator * TAO_Default_Resource_Factory::input_cdr_buffer_allocator (void) { - switch (this->cdr_allocator_source_) + ACE_Allocator *allocator = 0; + switch (this->cdr_allocator_type_) { - case TAO_GLOBAL: - if (GLOBAL_ALLOCATED::instance ()->input_cdr_buffer_allocator_ == 0) - { - ACE_NEW_RETURN (GLOBAL_ALLOCATED::instance ()->input_cdr_buffer_allocator_, - GBL_ALLOCATOR, - 0); - } - return GLOBAL_ALLOCATED::instance ()->input_cdr_buffer_allocator_; - case TAO_TSS: - if (TSS_ALLOCATED::instance ()->input_cdr_buffer_allocator_ == 0) - { - ACE_NEW_RETURN (TSS_ALLOCATED::instance ()->input_cdr_buffer_allocator_, - TSS_ALLOCATOR, - 0); - } - return TSS_ALLOCATED::instance ()->input_cdr_buffer_allocator_; + case TAO_ALLOCATOR_NULL_LOCK: + ACE_NEW_RETURN (allocator, + NULL_LOCK_ALLOCATOR, + 0); + break; + + case TAO_ALLOCATOR_THREAD_LOCK: + default: + ACE_NEW_RETURN (allocator, + LOCKED_ALLOCATOR, + 0); + break; } - return 0; + + return allocator; } ACE_Allocator* TAO_Default_Resource_Factory::output_cdr_dblock_allocator (void) { ACE_Allocator *allocator; - ACE_NEW_RETURN (allocator, TSS_ALLOCATOR, 0); + ACE_NEW_RETURN (allocator, NULL_LOCK_ALLOCATOR, 0); return allocator; } @@ -432,87 +440,10 @@ ACE_Allocator * TAO_Default_Resource_Factory::output_cdr_buffer_allocator (void) { ACE_Allocator *allocator; - ACE_NEW_RETURN (allocator, TSS_ALLOCATOR, 0); + ACE_NEW_RETURN (allocator, NULL_LOCK_ALLOCATOR, 0); return allocator; } -ACE_Data_Block* -TAO_Default_Resource_Factory::create_input_cdr_data_block (size_t size) -{ - switch (this->cdr_allocator_source_) - { - case TAO_GLOBAL: - { - ACE_Allocator* buffer_alloc = - this->input_cdr_buffer_allocator (); - ACE_Allocator* dblock_alloc = - this->input_cdr_dblock_allocator (); - - typedef - ACE_Locked_Data_Block<ACE_Lock_Adapter<ACE_SYNCH_MUTEX> > - Global_Data_Block; - Global_Data_Block *nb; - - ACE_NEW_MALLOC_RETURN ( - nb, - ACE_static_cast(Global_Data_Block*, - dblock_alloc->malloc (sizeof (Global_Data_Block))), - Global_Data_Block (size, - ACE_Message_Block::MB_DATA, - 0, - buffer_alloc, - 0, - dblock_alloc), - 0); - return nb; - } - - case TAO_TSS: - { - ACE_Allocator* buffer_alloc = - this->input_cdr_buffer_allocator (); - ACE_Allocator* dblock_alloc = - this->input_cdr_dblock_allocator (); - - ACE_Data_Block *nb; - - ACE_NEW_MALLOC_RETURN ( - nb, - ACE_static_cast(ACE_Data_Block*, - dblock_alloc->malloc (sizeof (ACE_Data_Block))), - ACE_Data_Block (size, - ACE_Message_Block::MB_DATA, - 0, - buffer_alloc, - 0, - 0, - dblock_alloc), - 0); - return nb; - } - } - return 0; -} - -// **************************************************************** - -TAO_Allocated_Resources::TAO_Allocated_Resources (void) - : input_cdr_dblock_allocator_ (0), - input_cdr_buffer_allocator_ (0) -{ -} - -TAO_Allocated_Resources::~TAO_Allocated_Resources (void) -{ - if (this->input_cdr_dblock_allocator_ != 0) - this->input_cdr_dblock_allocator_->remove (); - delete this->input_cdr_dblock_allocator_; - - if (this->input_cdr_buffer_allocator_ != 0) - this->input_cdr_buffer_allocator_->remove (); - delete this->input_cdr_buffer_allocator_; -} - // **************************************************************** ACE_STATIC_SVC_DEFINE (TAO_Default_Resource_Factory, @@ -529,11 +460,6 @@ ACE_FACTORY_DEFINE (TAO, TAO_Default_Resource_Factory) template class ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_SYNCH_MUTEX>; template class ACE_Allocator_Adapter<ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_SYNCH_MUTEX> >; -template class ACE_Locked_Data_Block<ACE_Lock_Adapter<ACE_SYNCH_MUTEX> >; - -template class ACE_Singleton<TAO_Allocated_Resources, ACE_SYNCH_MUTEX>; -template class ACE_TSS_Singleton<TAO_Allocated_Resources, ACE_SYNCH_MUTEX>; -template class ACE_TSS<TAO_Allocated_Resources>; template class ACE_Select_Reactor_Token_T<ACE_Noop_Token>; template class ACE_Lock_Adapter<ACE_Select_Reactor_Token_T<ACE_Noop_Token> >; @@ -543,11 +469,6 @@ template class ACE_Select_Reactor_T< ACE_Select_Reactor_Token_T<ACE_Noop_Token> #pragma instantiate ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_SYNCH_MUTEX> #pragma instantiate ACE_Allocator_Adapter<ACE_Malloc<ACE_LOCAL_MEMORY_POOL,ACE_SYNCH_MUTEX> > -#pragma instantiate ACE_Locked_Data_Block<ACE_Lock_Adapter<ACE_SYNCH_MUTEX> > - -#pragma instantiate ACE_Singleton<TAO_Allocated_Resources, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_TSS_Singleton<TAO_Allocated_Resources, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_TSS<TAO_Allocated_Resources> #pragma instantiate ACE_Select_Reactor_Token_T<ACE_Noop_Token> #pragma instantiate ACE_Lock_Adapter< ACE_Select_Reactor_Token_T<ACE_Noop_Token> > |