diff options
Diffstat (limited to 'TAO/tao/default_resource.cpp')
-rw-r--r-- | TAO/tao/default_resource.cpp | 477 |
1 files changed, 35 insertions, 442 deletions
diff --git a/TAO/tao/default_resource.cpp b/TAO/tao/default_resource.cpp index 8a7a7407650..ec602b639b4 100644 --- a/TAO/tao/default_resource.cpp +++ b/TAO/tao/default_resource.cpp @@ -1,25 +1,16 @@ // $Id$ #include "tao/default_resource.h" -#include "tao/Client_Strategy_Factory.h" -#include "tao/Server_Strategy_Factory.h" + #include "tao/ORB_Core.h" #include "tao/debug.h" #include "tao/IIOP_Factory.h" -#include "tao/UIOP_Factory.h" -#include "tao/SHMIOP_Factory.h" + #include "tao/Acceptor_Registry.h" #include "tao/Connector_Registry.h" #include "tao/Single_Reactor.h" -#include "tao/Reactor_Per_Priority.h" -#include "tao/Direct_Priority_Mapping.h" -#include "tao/Linear_Priority_Mapping.h" - -#include "ace/Select_Reactor.h" -#include "ace/FlReactor.h" -#include "ace/TkReactor.h" -#include "ace/WFMO_Reactor.h" -#include "ace/Msg_WFMO_Reactor.h" +#include "tao/Priority_Mapping.h" + #include "ace/TP_Reactor.h" #include "ace/Dynamic_Service.h" #include "ace/Arg_Shifter.h" @@ -31,21 +22,15 @@ 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_registry_type_ (TAO_SINGLE_REACTOR), - reactor_type_ (TAO_REACTOR_SELECT_MT), - cdr_allocator_type_ (TAO_ALLOCATOR_THREAD_LOCK), parser_names_count_ (0), parser_names_ (0), protocol_factories_ (), connection_caching_type_ (TAO_CONNECTION_CACHING_STRATEGY), purge_percentage_ (TAO_PURGE_PERCENT), reactor_mask_signals_ (1), - sched_policy_ (ACE_SCHED_OTHER), - priority_mapping_type_ (TAO_PRIORITY_MAPPING_DIRECT), dynamically_allocated_reactor_ (0), cached_connection_lock_type_ (TAO_THREAD_LOCK) { @@ -123,24 +108,6 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) } else if (ACE_OS::strcasecmp (argv[curarg], - "-ORBReactorLock") == 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO_Default_Resource obsolete -ORBReactorLock ") - ACE_TEXT ("option, please use -ORBReactorType\n"))); - curarg++; - if (curarg < argc) - { - char *name = argv[curarg]; - - if (ACE_OS::strcasecmp (name, "null") == 0) - reactor_type_ = TAO_REACTOR_SELECT_ST; - else if (ACE_OS::strcasecmp (name, "token") == 0) - reactor_type_= TAO_REACTOR_SELECT_MT; - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], "-ORBReactorMaskSignals") == 0) { curarg++; @@ -156,110 +123,6 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) } else if (ACE_OS::strcasecmp (argv[curarg], - "-ORBReactorRegistry") == 0) - { - curarg++; - if (curarg < argc) - { - char *name = argv[curarg]; - - if (ACE_OS::strcasecmp (name, - "single") == 0) - this->reactor_registry_type_ = TAO_SINGLE_REACTOR; - else if (ACE_OS::strcasecmp (name, - "per-priority") == 0) - this->reactor_registry_type_ = TAO_REACTOR_PER_PRIORITY; - else - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO_Default_Factory - unknown argument") - ACE_TEXT (" <%s> for -ORBReactorRegistry\n"), name)); - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-ORBReactorType") == 0) - { - curarg++; - if (curarg < argc) - { - char *name = argv[curarg]; - - if (ACE_OS::strcasecmp (name, - "select_mt") == 0) - reactor_type_ = TAO_REACTOR_SELECT_MT; - else if (ACE_OS::strcasecmp (name, - "select_st") == 0) - reactor_type_ = TAO_REACTOR_SELECT_ST; - else if (ACE_OS::strcasecmp (name, - "fl") == 0) -#if defined(ACE_HAS_FL) - reactor_type_ = TAO_REACTOR_FL; -#else - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO_Default_Factory - FlReactor") - ACE_TEXT (" not supported on this platform\n"))); -#endif /* ACE_HAS_FL */ - else if (ACE_OS::strcasecmp (name, "tk_reactor") == 0) -#if defined(ACE_HAS_TK) - reactor_type_ = TAO_REACTOR_TK; -#else - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO_Default_Factory - TkReactor") - ACE_TEXT (" not supported on this platform\n"))); -#endif /* ACE_HAS_TK */ - else if (ACE_OS::strcasecmp (name, - "wfmo") == 0) -#if defined(ACE_WIN32) - reactor_type_ = TAO_REACTOR_WFMO; -#else - ACE_DEBUG ((LM_DEBUG, - "TAO_Default_Factory - WFMO Reactor" - " not supported on this platform\n")); -#endif /* ACE_WIN32 */ - else if (ACE_OS::strcasecmp (name, - "msg_wfmo") == 0) -#if defined(ACE_WIN32) - reactor_type_ = TAO_REACTOR_MSGWFMO; -#else - ACE_DEBUG ((LM_DEBUG, - "TAO_Default_Factory - MsgWFMO Reactor" - " not supported on this platform\n")); -#endif /* ACE_WIN32 */ - - else if (ACE_OS::strcasecmp (name, - "tp") == 0) - reactor_type_ = TAO_REACTOR_TP; - else - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO_Default_Factory - unknown argument") - ACE_TEXT (" <%s> for -ORBreactortype\n"), name)); - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-ORBInputCDRAllocator") == 0) - { - curarg++; - if (curarg < argc) - { - char *name = argv[curarg]; - - if (ACE_OS::strcasecmp (name, - "null") == 0) - { - this->cdr_allocator_type_ = TAO_ALLOCATOR_NULL_LOCK; - this->use_locked_data_blocks_ = 0; - } - else if (ACE_OS::strcasecmp (name, - "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) { TAO_ProtocolFactorySet *pset = this->get_protocol_factories (); @@ -317,51 +180,6 @@ TAO_Default_Resource_Factory::init (int argc, char **argv) } else if (ACE_OS::strcasecmp (argv[curarg], - "-ORBSchedPolicy") == 0) - { - curarg++; - if (curarg < argc) - { - char *name = argv[curarg]; - - if (ACE_OS::strcasecmp (name, - "SCHED_OTHER") == 0) - this->sched_policy_ = ACE_SCHED_OTHER; - else if (ACE_OS::strcasecmp (name, - "SCHED_FIFO") == 0) - this->sched_policy_ = ACE_SCHED_FIFO; - else if (ACE_OS::strcasecmp (name, - "SCHED_RR") == 0) - this->sched_policy_ = ACE_SCHED_RR; - else - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO_Default_Factory - unknown argument") - ACE_TEXT (" <%s> for -ORBSchedPolicy\n"), name)); - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], - "-ORBPriorityMapping") == 0) - { - curarg++; - if (curarg < argc) - { - char *name = argv[curarg]; - - if (ACE_OS::strcasecmp (name, - "linear") == 0) - this->priority_mapping_type_ = TAO_PRIORITY_MAPPING_LINEAR; - else if (ACE_OS::strcasecmp (name, - "direct") == 0) - this->priority_mapping_type_ = TAO_PRIORITY_MAPPING_DIRECT; - else - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO_Default_Factory - unknown argument") - ACE_TEXT (" <%s> for -ORBPriorityMapping\n"), name)); - } - } - - else if (ACE_OS::strcasecmp (argv[curarg], "-ORBIORParser") == 0) { curarg++; @@ -524,14 +342,10 @@ TAO_Default_Resource_Factory::add_to_ior_parser_names (const char *curarg) return 0; } +// This is virtual and protected... int -TAO_Default_Resource_Factory::init_protocol_factories (void) +TAO_Default_Resource_Factory::load_default_protocols (void) { - TAO_ProtocolFactorySetItor end = protocol_factories_.end (); - TAO_ProtocolFactorySetItor factory = protocol_factories_.begin (); - - if (factory == end) - { // If the user did not list any protocols in her svc.conf file // then default to TAO's basic protocols. // You do *NOT* need modify this code to add your own protocol, @@ -634,133 +448,18 @@ TAO_Default_Resource_Factory::init_protocol_factories (void) ACE_TEXT ("protocol <IIOP_Factory>\n"))); } -#if TAO_HAS_UIOP == 1 - protocol_factory = - ACE_Dynamic_Service<TAO_Protocol_Factory>::instance ("UIOP_Factory"); - - if (protocol_factory == 0) - { - if (TAO_orbdebug) - ACE_ERROR ((LM_WARNING, - "(%P|%t) WARNING - No %s found in Service Repository." - " Using default instance.\n", - "UIOP Protocol Factory")); - - ACE_NEW_RETURN (protocol_factory, - TAO_UIOP_Protocol_Factory, - -1); - - ACE_AUTO_PTR_RESET (safe_protocol_factory, - protocol_factory, - TAO_Protocol_Factory); - - transfer_ownership = 1; - } - else - { - transfer_ownership = 0; - } - - ACE_NEW_RETURN (item, TAO_Protocol_Item ("UIOP_Factory"), -1); - // If the TAO_Protocol_Item retains ownership of the - // TAO_Protocol_Factory then we used an auto_ptr<> above, so - // release the TAO_Protocol_Factory from it. Otherwise, we - // obtained the TAO_Protocol_Factory from the Service - // Configurator so an auto_ptr<> wasn't used since the Service - // Configurator retains ownership, hence there was no need to - // use an auto_ptr<> in this method. - item->factory ((transfer_ownership ? - safe_protocol_factory.release () : - protocol_factory), - transfer_ownership); - - if (this->protocol_factories_.insert (item) == -1) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("TAO (%P|%t) Unable to add ") - ACE_TEXT ("<%s> to protocol factory set.\n"), - item->protocol_name ().c_str ())); - - delete item; - - if (transfer_ownership == 0) - delete protocol_factory; - - return -1; - } - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) Loaded default ") - ACE_TEXT ("protocol <UIOP_Factory>\n"))); - } -#endif /* TAO_HAS_UIOP == 1 */ - -#if defined (TAO_HAS_SHMIOP) && (TAO_HAS_SHMIOP != 0) - protocol_factory = - ACE_Dynamic_Service<TAO_Protocol_Factory>::instance ("SHMIOP_Factory"); - - if (protocol_factory == 0) - { - if (TAO_orbdebug) - ACE_ERROR ((LM_WARNING, - "(%P|%t) WARNING - No %s found in Service Repository." - " Using default instance.\n", - "SHMIOP Protocol Factory")); - - ACE_NEW_RETURN (protocol_factory, - TAO_SHMIOP_Protocol_Factory, - -1); - - ACE_AUTO_PTR_RESET (safe_protocol_factory, - protocol_factory, - TAO_Protocol_Factory); - - transfer_ownership = 1; - } - else - { - transfer_ownership = 0; - } - - ACE_NEW_RETURN (item, TAO_Protocol_Item ("SHMIOP_Factory"), -1); - // If the TAO_Protocol_Item retains ownership of the - // TAO_Protocol_Factory then we used an auto_ptr<> above, so - // release the TAO_Protocol_Factory from it. Otherwise, we - // obtained the TAO_Protocol_Factory from the Service - // Configurator so an auto_ptr<> wasn't used since the Service - // Configurator retains ownership, hence there was no need to - // use an auto_ptr<> in this method. - item->factory ((transfer_ownership ? - safe_protocol_factory.release () : - protocol_factory), - transfer_ownership); - - if (this->protocol_factories_.insert (item) == -1) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("TAO (%P|%t) Unable to add ") - ACE_TEXT ("<%s> to protocol factory set.\n"), - item->protocol_name ().c_str ())); - - delete item; - - if (transfer_ownership == 0) - delete protocol_factory; - - return -1; - } + return 0; +} - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("TAO (%P|%t) Loaded default ") - ACE_TEXT ("protocol <SHMIOP_Factory>\n"))); - } -#endif /* TAO_HAS_SHMIOP && TAO_HAS_SHMIOP != 0 */ +int +TAO_Default_Resource_Factory::init_protocol_factories (void) +{ + TAO_ProtocolFactorySetItor end = protocol_factories_.end (); + TAO_ProtocolFactorySetItor factory = protocol_factories_.begin (); - return 0; + if (factory == end) + { + return this->load_default_protocols (); } for (; factory != end; factory++) @@ -834,22 +533,10 @@ TAO_Reactor_Registry * TAO_Default_Resource_Factory::get_reactor_registry (void) { TAO_Reactor_Registry *reactor_registry = 0; - switch (this->reactor_registry_type_) - { - default: - case TAO_SINGLE_REACTOR: - ACE_NEW_RETURN (reactor_registry, - TAO_Single_Reactor, - 0); - break; - - case TAO_REACTOR_PER_PRIORITY: - ACE_NEW_RETURN (reactor_registry, - TAO_Reactor_Per_Priority, - 0); - break; - } + ACE_NEW_RETURN (reactor_registry, + TAO_Single_Reactor, + 0); return reactor_registry; } @@ -857,60 +544,11 @@ ACE_Reactor_Impl* TAO_Default_Resource_Factory::allocate_reactor_impl (void) const { ACE_Reactor_Impl *impl = 0; - switch (this->reactor_type_) - { - default: - case TAO_REACTOR_SELECT_MT: - ACE_NEW_RETURN (impl, - TAO_REACTOR ((ACE_Sig_Handler*)0, - (ACE_Timer_Queue*)0, - 0, - (ACE_Reactor_Notify*)0, - this->reactor_mask_signals_), - 0); - break; - - case TAO_REACTOR_SELECT_ST: - ACE_NEW_RETURN (impl, - TAO_NULL_LOCK_REACTOR ((ACE_Sig_Handler*)0, - (ACE_Timer_Queue*)0, - 0, - (ACE_Reactor_Notify*)0, - this->reactor_mask_signals_), - 0); - break; - - case TAO_REACTOR_FL: -#if defined(ACE_HAS_FL) - ACE_NEW_RETURN (impl, ACE_FlReactor, 0); -#endif /* ACE_HAS_FL */ - break; - - case TAO_REACTOR_TK: -#if defined(ACE_HAS_TK) - ACE_NEW_RETURN (impl, ACE_TkReactor, 0); -#endif /* ACE_HAS_TK */ - break; - - case TAO_REACTOR_WFMO: -#if defined(ACE_WIN32) && !defined (ACE_LACKS_MSG_WFMO) - ACE_NEW_RETURN (impl, ACE_WFMO_Reactor, 0); -#endif /* ACE_WIN32 && !ACE_LACKS_MSG_WFMO */ - break; - - case TAO_REACTOR_MSGWFMO: -#if defined(ACE_WIN32) && !defined (ACE_HAS_WINCE) - ACE_NEW_RETURN (impl, ACE_Msg_WFMO_Reactor, 0); -#endif /* ACE_WIN32 && !ACE_HAS_WINCE */ - break; - - case TAO_REACTOR_TP: - ACE_NEW_RETURN (impl, ACE_TP_Reactor ((ACE_Sig_Handler*)0, - (ACE_Timer_Queue*)0, - this->reactor_mask_signals_), - 0); - break; - } + + ACE_NEW_RETURN (impl, ACE_TP_Reactor ((ACE_Sig_Handler*)0, + (ACE_Timer_Queue*)0, + this->reactor_mask_signals_), + 0); return impl; } @@ -953,21 +591,9 @@ ACE_Allocator * TAO_Default_Resource_Factory::input_cdr_dblock_allocator (void) { ACE_Allocator *allocator = 0; - switch (this->cdr_allocator_type_) - { - 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; - } + ACE_NEW_RETURN (allocator, + LOCKED_ALLOCATOR, + 0); return allocator; } @@ -976,21 +602,10 @@ ACE_Allocator * TAO_Default_Resource_Factory::input_cdr_buffer_allocator (void) { ACE_Allocator *allocator = 0; - switch (this->cdr_allocator_type_) - { - 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; - } + ACE_NEW_RETURN (allocator, + LOCKED_ALLOCATOR, + 0); + return allocator; } @@ -1046,24 +661,10 @@ TAO_Default_Resource_Factory::get_priority_mapping (void) return 0; #else TAO_Priority_Mapping *pm; - switch (this->priority_mapping_type_) - { - case TAO_PRIORITY_MAPPING_LINEAR: - ACE_NEW_RETURN (pm, - TAO_Linear_Priority_Mapping (this->sched_policy_), - 0); - break; - case TAO_PRIORITY_MAPPING_DIRECT: - ACE_NEW_RETURN (pm, - TAO_Direct_Priority_Mapping (this->sched_policy_), - 0); - break; - default: - ACE_NEW_RETURN (pm, - TAO_Priority_Mapping, - 0); - break; - } + + ACE_NEW_RETURN (pm, + TAO_Priority_Mapping, + 0); return pm; #endif /* TAO_HAS_RT_CORBA == 0 */ } @@ -1082,19 +683,11 @@ ACE_FACTORY_DEFINE (TAO, TAO_Default_Resource_Factory) #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Select_Reactor_Token_T<ACE_Noop_Token>; -template class ACE_Lock_Adapter<ACE_Select_Reactor_Token_T<ACE_Noop_Token> >; -template class ACE_Select_Reactor_T< ACE_Select_Reactor_Token_T<ACE_Noop_Token> >; - template class auto_ptr<TAO_Protocol_Factory>; template class ACE_Auto_Basic_Ptr<TAO_Protocol_Factory>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Select_Reactor_Token_T<ACE_Noop_Token> -#pragma instantiate ACE_Lock_Adapter< ACE_Select_Reactor_Token_T<ACE_Noop_Token> > -#pragma instantiate ACE_Select_Reactor_T< ACE_Select_Reactor_Token_T<ACE_Noop_Token> > - #pragma instantiate auto_ptr<TAO_Protocol_Factory> #pragma ACE_Auto_Basic_Ptr<TAO_Protocol_Factory> |