void Config_Backing_Store::loadActivators () { ACE_Configuration_Section_Key root; int err = config_.open_section (config_.root_section (), ACTIVATORS_ROOT_KEY, 0, root); if (err == 0) { int index = 0; ACE_TString name; while (config_.enumerate_sections (root, index, name) == 0) { ACE_CString ior; u_int token; ACE_Configuration_Section_Key key; // Can't fail, because we're enumerating config_.open_section (root, name.c_str(), 0, key); config_.get_string_value (key, IOR, ior); config_.get_integer_value (key, TOKEN, token); Activator_Info* ai; ACE_NEW (ai, Activator_Info (name, token, ior)); Activator_Info_Ptr info (ai); activators ().bind (lcase (name), info); ++index; } } }
int Locator_Repository::remove_activator (const ACE_CString& name) { int err = sync_load (); if (err != 0) { return err; } int ret = activators().unbind (lcase(name)); if (ret != 0) { return ret; } Locator_Repository::SIMap::ENTRY* sientry = 0; Locator_Repository::SIMap::ITERATOR siit (servers ()); for (; siit.next (sientry); siit.advance() ) { Server_Info *info = sientry->int_id_->active_info (); if (info->death_notify && info->activator == name) { info->death_notify = false; } } return persistent_remove(name, true); }
Activator_Info_Ptr Locator_Repository::get_activator (const ACE_CString& name) { sync_load (); Activator_Info_Ptr activator (0); activators ().find (lcase (name), activator); return activator; }
int Locator_Repository::add_activator (const ACE_CString& name, const CORBA::Long token, const ACE_CString& ior, ImplementationRepository::Activator_ptr act) { int err = sync_load (); if (err != 0) { return err; } Activator_Info_Ptr info (new Activator_Info (name, token, ior, act)); err = activators ().bind (lcase (name), info); if (err != 0) { return err; } this->persistent_update(info, true); return 0; }
bool Locator_Repository::has_activator (const ACE_CString& name) { Activator_Info_Ptr activator (0); return activators().find (lcase (name), activator) == 0; }