diff options
Diffstat (limited to 'TAO/tao/default_server.cpp')
-rw-r--r-- | TAO/tao/default_server.cpp | 90 |
1 files changed, 50 insertions, 40 deletions
diff --git a/TAO/tao/default_server.cpp b/TAO/tao/default_server.cpp index bfc0d102e59..6e6d9467a6d 100644 --- a/TAO/tao/default_server.cpp +++ b/TAO/tao/default_server.cpp @@ -13,6 +13,7 @@ TAO_Default_Server_Strategy_Factory::TAO_Default_Server_Strategy_Factory (void) : activate_server_connections_ (0), thread_flags_ (THR_BOUND | THR_DETACHED), poa_lock_type_ (TAO_THREAD_LOCK), + event_loop_lock_type_ (TAO_NULL_LOCK), thread_per_connection_use_timeout_ (-1) { } @@ -60,6 +61,23 @@ TAO_Default_Server_Strategy_Factory::server_connection_thread_count (void) return 1; } +ACE_Lock * +TAO_Default_Server_Strategy_Factory::create_event_loop_lock (void) +{ + ACE_Lock *the_lock = 0; + + if (this->event_loop_lock_type_ == TAO_NULL_LOCK) + ACE_NEW_RETURN (the_lock, + ACE_Lock_Adapter<ACE_SYNCH_NULL_MUTEX>, + 0); + else + ACE_NEW_RETURN (the_lock, + ACE_Lock_Adapter<TAO_SYNCH_RECURSIVE_MUTEX>, + 0); + + return the_lock; +} + // Evil macros b/c I'm lazy! #define TAO_BEGINCHECK if (0) #define TAO_CHECKANDSET(sym) \ @@ -126,8 +144,6 @@ TAO_Default_Server_Strategy_Factory::parse_args (int argc, char *argv[]) else if (ACE_OS::strcasecmp (name, "thread-per-connection") == 0) this->activate_server_connections_ = 1; - else - this->report_option_value_error ("-ORBConcurrency", name); } } @@ -229,8 +245,6 @@ TAO_Default_Server_Strategy_Factory::parse_args (int argc, char *argv[]) "linear") == 0) this->active_object_map_creation_parameters_.object_lookup_strategy_for_user_id_policy_ = TAO_LINEAR; - else - this->report_option_value_error ("-ORBUseridPolicyDemuxStrategy", name); } } else if (ACE_OS::strcasecmp (argv[curarg], @@ -253,8 +267,6 @@ TAO_Default_Server_Strategy_Factory::parse_args (int argc, char *argv[]) "active") == 0) this->active_object_map_creation_parameters_.object_lookup_strategy_for_system_id_policy_ = TAO_ACTIVE_DEMUX; - else - this->report_option_value_error ("-ORBSystemidPolicyDemuxStrategy", name); } } else if (ACE_OS::strcasecmp (argv[curarg], @@ -274,8 +286,6 @@ TAO_Default_Server_Strategy_Factory::parse_args (int argc, char *argv[]) "linear") == 0) this->active_object_map_creation_parameters_.poa_lookup_strategy_for_persistent_id_policy_ = TAO_LINEAR; - else - this->report_option_value_error ("-ORBPersistentidPolicyDemuxStrategy", name); } } else if (ACE_OS::strcasecmp (argv[curarg], @@ -298,8 +308,6 @@ TAO_Default_Server_Strategy_Factory::parse_args (int argc, char *argv[]) "active") == 0) this->active_object_map_creation_parameters_.poa_lookup_strategy_for_transient_id_policy_ = TAO_ACTIVE_DEMUX; - else - this->report_option_value_error ("-ORBTransientidPolicyDemuxStrategy", name); } } else if (ACE_OS::strcasecmp (argv[curarg], @@ -318,11 +326,17 @@ TAO_Default_Server_Strategy_Factory::parse_args (int argc, char *argv[]) "linear") == 0) this->active_object_map_creation_parameters_.reverse_object_lookup_strategy_for_unique_id_policy_ = TAO_LINEAR; - else - this->report_option_value_error ("-ORBUniqueidPolicyReverseDemuxStrategy", name); } } else if (ACE_OS::strcasecmp (argv[curarg], + "-ORBDemuxStrategy") == 0) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Warning: -ORBDemuxStrategy is deprecated. Please use ") + ACE_TEXT ("-ORBSystemidPolicyDemuxStrategy or -ORBUseridPolicyDemuxStrategy instead.\n"))); + curarg++; + } + else if (ACE_OS::strcasecmp (argv[curarg], "-ORBPOALock") == 0) { curarg++; @@ -336,50 +350,46 @@ TAO_Default_Server_Strategy_Factory::parse_args (int argc, char *argv[]) else if (ACE_OS::strcasecmp (name, "null") == 0) this->poa_lock_type_ = TAO_NULL_LOCK; - else - this->report_option_value_error ("-ORBPOALock", name); } } else if (ACE_OS::strcasecmp (argv[curarg], - "-ORBThreadFlags") == 0) + "-ORBEventLoopLock") == 0) { curarg++; - if (curarg < argc) - this->tokenize (argv[curarg]); + { + char *name = argv[curarg]; + + if (ACE_OS::strcasecmp (name, + "thread") == 0) + this->event_loop_lock_type_ = TAO_THREAD_LOCK; + else if (ACE_OS::strcasecmp (name, + "null") == 0) + this->event_loop_lock_type_ = TAO_NULL_LOCK; + } } - else if (ACE_OS::strncmp (argv[curarg], "-ORB", 4) == 0) + else if (ACE_OS::strcasecmp (argv[curarg], + "-ORBConnectorLock") == 0) { - // Can we assume there is an argument after the option? - // curarg++; - ACE_ERROR ((LM_ERROR, - "Server_Strategy_Factory - " - "unknown option <%s>\n", - argv[curarg])); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("TAO (%P|%t) WARNING: the ") + ACE_TEXT ("-ORBConnectorLock option is in the client ") + ACE_TEXT ("strategy factory now\n"))); } - else + + else if (ACE_OS::strcasecmp (argv[curarg], + "-ORBThreadFlags") == 0) { - ACE_DEBUG ((LM_DEBUG, - "Server_Strategy_Factory - " - "ignoring option <%s>\n", - argv[curarg])); + curarg++; + + if (curarg < argc) + this->tokenize (argv[curarg]); } return 0; } -void -TAO_Default_Server_Strategy_Factory::report_option_value_error ( - const char* option_name, - const char* option_value) -{ - ACE_DEBUG((LM_DEBUG, - ACE_TEXT ("Server_Strategy_Factory - unknown argument") - ACE_TEXT (" <%s> for <%s>\n"), - option_value, option_name)); -} - #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |