diff options
Diffstat (limited to 'TAO/tao/IIOP_Acceptor.cpp')
-rw-r--r-- | TAO/tao/IIOP_Acceptor.cpp | 156 |
1 files changed, 8 insertions, 148 deletions
diff --git a/TAO/tao/IIOP_Acceptor.cpp b/TAO/tao/IIOP_Acceptor.cpp index 1ea3a5283bc..8f9e93d94c0 100644 --- a/TAO/tao/IIOP_Acceptor.cpp +++ b/TAO/tao/IIOP_Acceptor.cpp @@ -65,7 +65,7 @@ TAO_IIOP_Acceptor::create_mprofile (const TAO_ObjectKey &object_key, return -1; } - TAO_IIOP_Profile *pfile = 0; + TAO_IIOP_Profile *pfile; ACE_NEW_RETURN (pfile, TAO_IIOP_Profile (this->host_.c_str (), this->address_.get_port_number (), @@ -76,11 +76,7 @@ TAO_IIOP_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; @@ -92,8 +88,6 @@ TAO_IIOP_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; } @@ -123,23 +117,15 @@ int TAO_IIOP_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; - ACE_INET_Addr addr; - if (ACE_OS::strchr (address, ':') == 0) + if (ACE_OS::strchr (address.c_str(), ':') == 0) { // Assume the address is a port number or port name and obtain // the fully qualified domain name. @@ -149,7 +135,7 @@ TAO_IIOP_Acceptor::open (TAO_ORB_Core *orb_core, return -1; // First convert the port into a usable form. - if (addr.set (address) != 0) + if (addr.set (address.c_str ()) != 0) return -1; // Now reset the port and set the host. @@ -158,7 +144,7 @@ TAO_IIOP_Acceptor::open (TAO_ORB_Core *orb_core, 1) != 0) return -1; } - else if (addr.set (address) != 0) + else if (addr.set (address.c_str ()) != 0) { return -1; } @@ -167,13 +153,8 @@ TAO_IIOP_Acceptor::open (TAO_ORB_Core *orb_core, } int -TAO_IIOP_Acceptor::open_default (TAO_ORB_Core *orb_core, - const char *options) +TAO_IIOP_Acceptor::open_default (TAO_ORB_Core *orb_core) { - // Parse options - if (this->parse_options (options) == -1) - return -1; - // @@ Until we can support multihomed machines correctly we must // pick the "default interface" and only listen on that IP // address. @@ -210,7 +191,7 @@ TAO_IIOP_Acceptor::open_i (TAO_ORB_Core* orb_core, -1); 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) @@ -280,127 +261,6 @@ TAO_IIOP_Acceptor::endpoint_count (void) return 1; } -int -TAO_IIOP_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 IIOP 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) IIOP 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 IIOP " - "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 IIOP endpoint " - "priority: <%s>\n", - value.c_str ()), - -1); - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "TAO (%P|%t) Invalid IIOP option: <%s>\n", - name.c_str ()), - -1); - } - } - } - - return 0; -} - #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Acceptor<TAO_IIOP_Server_Connection_Handler, ACE_SOCK_ACCEPTOR>; |