void AsyncAccessManager::final_state (bool active) { bool success = this->status_ == ImplementationRepository::AAM_SERVER_READY; this->info_.edit (active)->started (success); this->retries_ = this->info_->start_limit_; if (active) { this->info_.update_repo (); } this->notify_waiters (); this->manual_start_ = false; if (active) { this->info_.notify_remote_access (this->status_); } if (this->info_->is_mode (ImplementationRepository::PER_CLIENT) || this->status_ != ImplementationRepository::AAM_SERVER_READY) { if (ImR_Locator_i::debug () > 5) { ORBSVCS_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::final_state ") ACE_TEXT ("removing this from map, server = %s\n"), this, info_->ping_id ())); } AsyncAccessManager_ptr aam (this); this->locator_.remove_aam (aam); aam._retn(); // release w/o decrementing since table held last reference. } }
AsyncAccessManager * ImR_Locator_i::create_aam (UpdateableServerInfo &info, bool running) { AsyncAccessManager_ptr aam; ACE_NEW_RETURN (aam, AsyncAccessManager (info, *this), 0); if (running) { aam->started_running (); } { this->aam_active_.insert_tail (aam); } return aam._retn (); }