bool TAO_Acceptor_Registry::is_collocated (const TAO_MProfile &mprofile) { TAO_AcceptorSetIterator const end = this->end (); CORBA::ULong const count = mprofile.profile_count (); // If at least one endpoint in one of the profiles matches one of // the acceptors, we are collocated. for (TAO_AcceptorSetIterator i = this->begin (); i != end; ++i) { for (TAO_PHandle j = 0; j != count; ++j) { const TAO_Profile *profile = mprofile.get_profile (j); // @@ We need to invoke a nonconst <endpoint> method on // <profile>. The content of profile/endpoint will not // be modified. TAO_Profile *pf = const_cast<TAO_Profile *> (profile); // Check all endpoints for address equality. if ((*i)->tag () == pf->tag ()) { // @note This can be a potentially expensive (O(n^2)) // operation if the below is_collocated() call // also executes a loop. for (TAO_Endpoint *endp = pf->endpoint (); endp != 0; endp = endp->next ()) { if ((*i)->is_collocated (endp)) { return true; } } } } } return false; }