void TAO_PortableGroup_Acceptor_Registry::open_i (const TAO_Profile* profile, TAO_ORB_Core &orb_core, TAO_ProtocolFactorySetItor &factory) { TAO_Acceptor *acceptor = (*factory)->factory ()->make_acceptor (); if (acceptor != 0) { // Extract the desired endpoint/protocol version if one // exists. const TAO_GIOP_Message_Version &version = profile->version (); char buffer [MAX_ADDR_LENGTH]; // Removed the constness of profile. We're not changing // anything, but need to call a nonconst function. TAO_Profile* nc_profile = const_cast<TAO_Profile *> (profile); nc_profile->endpoint ()->addr_to_string (buffer, MAX_ADDR_LENGTH); if (acceptor->open (&orb_core, orb_core.lane_resources ().leader_follower ().reactor(), version.major, version.minor, buffer, 0) == -1) { delete acceptor; if (TAO_debug_level > 0) ORBSVCS_ERROR ((LM_ERROR, ACE_TEXT ("TAO (%P|%t) ") ACE_TEXT ("unable to open acceptor ") ACE_TEXT ("for <%s>%p\n"), buffer, "")); throw CORBA::BAD_PARAM ( CORBA::SystemException::_tao_minor_code ( TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE, EINVAL), CORBA::COMPLETED_NO); } // Add acceptor to list. Entry tmp_entry; tmp_entry.acceptor = acceptor; tmp_entry.endpoint = nc_profile->endpoint ()->duplicate (); tmp_entry.cnt = 1; if (this->registry_.enqueue_tail (tmp_entry) == -1) { delete acceptor; if (TAO_debug_level > 0) ORBSVCS_ERROR ((LM_ERROR, ACE_TEXT ("TAO (%P|%t) ") ACE_TEXT ("unable to add acceptor to registry") ACE_TEXT ("for <%s>%p\n"), buffer, "")); throw CORBA::BAD_PARAM ( CORBA::SystemException::_tao_minor_code ( TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE, EINVAL), CORBA::COMPLETED_NO); } } else { if (TAO_debug_level > 0) ORBSVCS_ERROR ((LM_ERROR, ACE_TEXT ("TAO (%P|%t) ") ACE_TEXT ("unable to create acceptor ") )); throw CORBA::BAD_PARAM ( CORBA::SystemException::_tao_minor_code ( TAO_ACCEPTOR_REGISTRY_OPEN_LOCATION_CODE, EINVAL), CORBA::COMPLETED_NO); } }