int XML_Backing_Store::persist () { FILE* fp = ACE_OS::fopen (this->filename_.c_str (), "w"); if (fp == 0) { ORBSVCS_ERROR ((LM_ERROR, ACE_TEXT ("Couldn't write to file %C\n"), this->filename_.c_str())); return -1; } ACE_OS::fprintf (fp,"<?xml version=\"1.0\"?>\n"); ACE_OS::fprintf (fp,"<%s>\n", Locator_XMLHandler::ROOT_TAG); // Save servers Locator_Repository::SIMap::ENTRY* sientry = 0; Locator_Repository::SIMap::ITERATOR siit (this->servers ()); for (; siit.next (sientry); siit.advance() ) { persist(fp, *sientry->int_id_, "\t"); } // Save Activators Locator_Repository::AIMap::ENTRY* aientry = 0; Locator_Repository::AIMap::ITERATOR aiit (this->activators ()); for (; aiit.next (aientry); aiit.advance ()) { ACE_CString aname = aientry->ext_id_; persist(fp, *aientry->int_id_, "\t"); } ACE_OS::fprintf (fp,"</%s>\n", Locator_XMLHandler::ROOT_TAG); ACE_OS::fclose (fp); return 0; }
void ImR_Locator_i::shutdown (ImplementationRepository::AMH_AdministrationResponseHandler_ptr _tao_rh, CORBA::Boolean activators, CORBA::Boolean servers) { this->pinger_.shutdown (); this->aam_active_.reset (); this->aam_terminating_.reset (); if (servers != 0 && this->repository_->servers ().current_size () > 0) { // Note : shutdown is oneway, so we can't throw ORBSVCS_ERROR (( LM_ERROR, ACE_TEXT ("(%P|%t) ImR: Shutdown of all servers not implemented.\n"))); } if (activators != 0 && this->repository_->activators ().current_size () > 0) { ACE_Vector<ImplementationRepository::Activator_var> acts; Locator_Repository::AIMap::ENTRY* entry = 0; Locator_Repository::AIMap::ITERATOR it (this->repository_->activators ()); for (;it.next (entry) != 0; it.advance ()) { Activator_Info_Ptr info = entry->int_id_; ACE_ASSERT (! info.null ()); this->connect_activator (*info); if (! CORBA::is_nil (info->activator.in ())) acts.push_back (info->activator); } int shutdown_errs = 0; for (size_t i = 0; i < acts.size (); ++i) { try { acts[i]->shutdown (); acts[i] = ImplementationRepository::Activator::_nil (); } catch (const CORBA::Exception& ex) { ++shutdown_errs; if (debug_ > 1) { ex._tao_print_exception ( ACE_TEXT ("(%P|%t) ImR: shutdown activator")); } } } if (debug_ > 0 && shutdown_errs > 0) { ORBSVCS_DEBUG (( LM_DEBUG, ACE_TEXT ("(%P|%t) ImR: Some activators could not be shut down.\n"))); } } // Technically, we should wait for all the activators to unregister, but // ,for now at least, it doesn't seem worth it. this->shutdown (false); _tao_rh->shutdown (); }