diff options
Diffstat (limited to 'TAO/tao/UIOP_Acceptor.cpp')
-rw-r--r-- | TAO/tao/UIOP_Acceptor.cpp | 150 |
1 files changed, 5 insertions, 145 deletions
diff --git a/TAO/tao/UIOP_Acceptor.cpp b/TAO/tao/UIOP_Acceptor.cpp index 94d083eda06..9087cc1b44d 100644 --- a/TAO/tao/UIOP_Acceptor.cpp +++ b/TAO/tao/UIOP_Acceptor.cpp @@ -78,11 +78,7 @@ TAO_UIOP_Acceptor::create_mprofile (const TAO_ObjectKey &object_key, -1); if (mprofile.give_profile (pfile) == -1) - { - pfile->_decr_refcnt (); - pfile = 0; - return -1; - } + return -1; if (this->orb_core_->orb_params ()->std_profile_components () == 0) return 0; @@ -94,8 +90,6 @@ TAO_UIOP_Acceptor::create_mprofile (const TAO_ObjectKey &object_key, code_set_info.ForWcharData.native_code_set = TAO_DEFAULT_WCHAR_CODESET_ID; pfile->tagged_components ().set_code_sets (code_set_info); - pfile->tagged_components ().set_tao_priority (this->priority ()); - return 0; } @@ -137,31 +131,18 @@ int TAO_UIOP_Acceptor::open (TAO_ORB_Core *orb_core, int major, int minor, - const char *address, - const char *options) + ACE_CString &address) { - if (address == 0) - return -1; - if (major >= 0 && minor >= 0) this->version_.set_version (ACE_static_cast (CORBA::Octet, major), ACE_static_cast (CORBA::Octet, minor)); - // Parse options - if (this->parse_options (options) == -1) - return -1; - - return this->open_i (orb_core, address); + return this->open_i (orb_core, address.c_str ()); } int -TAO_UIOP_Acceptor::open_default (TAO_ORB_Core *orb_core, - const char *options) +TAO_UIOP_Acceptor::open_default (TAO_ORB_Core *orb_core) { - // Parse options - if (this->parse_options (options) == -1) - return -1; - ACE_Auto_String_Free tempname (ACE_OS::tempnam (0, "TAO")); if (tempname.get () == 0) @@ -193,7 +174,7 @@ TAO_UIOP_Acceptor::open_i (TAO_ORB_Core* orb_core, this->rendezvous_point (addr, rendezvous); if (this->base_acceptor_.open (addr, - this->orb_core_->reactor (this), + this->orb_core_->reactor (), this->creation_strategy_, this->accept_strategy_, this->concurrency_strategy_) == -1) @@ -270,127 +251,6 @@ TAO_UIOP_Acceptor::endpoint_count (void) return 1; } -int -TAO_UIOP_Acceptor::parse_options (const char *str) -{ - if (str == 0) - return 0; // No options to parse. Not a problem. - - // Use an option format similar to the one used for CGI scripts in - // HTTP URLs. - // e.g.: option1=foo&option2=bar - - ACE_CString options (str); - - size_t len = options.length (); - - - const char option_delimiter = '&'; - - // Count the number of options. - - CORBA::ULong option_count = 1; - // Number of endpoints in the string (initialized to 1). - - // Only check for endpoints after the protocol specification and - // before the object key. - for (size_t i = 0; i < len; ++i) - { - if (options[i] == option_delimiter) - option_count++; - } - - - // The idea behind the following loop is to split the options into - // (option, name) pairs. - // For example, - // `option1=foo&option2=bar' - // will be parsed into: - // `option1=foo' - // `option2=bar' - - int begin = 0; - int end = -1; - - for (CORBA::ULong j = 0; j < option_count; ++j) - { - begin += end + 1; - - if (j < option_count - 1) - end = options.find (option_delimiter, begin); - else - end = len - begin; // Handle last endpoint differently - - if (end == begin) - { - ACE_ERROR_RETURN ((LM_ERROR, - "TAO (%P|%t) Zero length UIOP option.\n"), - -1); - } - else if (end != ACE_CString::npos) - { - ACE_CString opt = options.substring (begin, end); - - int slot = opt.find ("="); - - if (slot == ACE_static_cast (int, len - 1) || - slot == ACE_CString::npos) - { - ACE_ERROR_RETURN ((LM_ERROR, - "TAO (%P|%t) UIOP option <%s> is " - "missing a value.\n", - opt.c_str ()), - -1); - } - - ACE_CString name = opt.substring (0, slot); - ACE_CString value = opt.substring (slot + 1); - - if (name.length () == 0) - { - ACE_ERROR_RETURN ((LM_ERROR, - "TAO (%P|%t) Zero length UIOP " - "option name.\n"), - -1); - } - - if (name == "priority") - { - CORBA::Short corba_priority = - ACE_static_cast (CORBA::Short, - ACE_OS::atoi (value.c_str ())); - - if (corba_priority >= 0 - /* && corba_priority < 32768 */) - { - // priority_ and corba_priority will always be less - // than 32768 since CORBA::Short is a signed 16 bit - // integer. - - this->priority_ = corba_priority; - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "TAO (%P|%t) Invalid UIOP endpoint " - "priority: <%s>\n", - value.c_str ()), - -1); - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "TAO (%P|%t) Invalid UIOP option: <%s>\n", - name.c_str ()), - -1); - } - } - } - - return 0; -} - #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) |