void TAO_ExtValueDef_i::ext_initializers_i ( const CORBA::ExtInitializerSeq &ext_initializers ) { ACE_Configuration *config = this->repo_->config (); config->remove_section (this->section_key_, "initializers", 1); /// This does not handle the initializer exceptions, so we do that below. TAO_IFR_Generic_Utils<CORBA::ExtInitializerSeq>::set_initializers ( ext_initializers, this->repo_->config (), this->section_key_ ); CORBA::ULong length = ext_initializers.length (); if (length > 0) { ACE_Configuration_Section_Key initializers_key, initializer_key; char *stringified = 0; this->repo_->config ()->open_section (this->section_key_, "initializers", 0, initializers_key); for (CORBA::ULong i = 0; i < length; ++i) { stringified = TAO_IFR_Service_Utils::int_to_string (i); this->repo_->config ()->open_section (initializers_key, stringified, 0, initializer_key); this->exceptions (initializer_key, "excepts", ext_initializers[i].exceptions); } } }
static int get_key (ACE_Configuration& cfg, const ACE_CString& name, const ACE_TCHAR* const sub_section, ACE_Configuration_Section_Key& key) { ACE_Configuration_Section_Key root; int err = cfg.open_section (cfg.root_section(), sub_section, 1, root); if (err != 0) { ORBSVCS_ERROR ((LM_ERROR, ACE_TEXT ("Unable to open config section:%s\n"), sub_section)); return err; } err = cfg.open_section (root, name.c_str (), 1, key); if (err != 0) { ORBSVCS_ERROR((LM_ERROR, ACE_TEXT ("Unable to open config section:%C\n"), name.c_str ())); } return err; }
ACE_TString TAO_IFR_Service_Utils::create_common ( CORBA::DefinitionKind container_kind, CORBA::DefinitionKind contained_kind, ACE_Configuration_Section_Key container_key, ACE_Configuration_Section_Key &new_key, TAO_Repository_i *repo, const char *id, const char *name, TAO_IFR_Service_Utils::name_clash_checker checker, const char *version, const char *sub_section_name ) { ACE_TString path; // No need for a return value, every error we check for will throw // one of the BAD_PARAM versions if it is discovered. TAO_IFR_Service_Utils::valid_creation (container_kind, contained_kind, id, checker, container_key, repo); ACE_Configuration *config = repo->config (); // Create new section, or open if it already exists. ACE_Configuration_Section_Key sub_key; config->open_section (container_key, sub_section_name, 1, sub_key); u_int defn_count = 0; // If we have a count, it gets set, if not, it stays 0. config->get_integer_value (sub_key, "count", defn_count); char *section_name = TAO_IFR_Service_Utils::int_to_string (defn_count); config->open_section (sub_key, section_name, 1, new_key); // Increment the count. config->set_integer_value (sub_key, "count", defn_count + 1); config->get_integer_value (sub_key, "count", defn_count); // Set the name attribute. config->set_string_value (new_key, "name", name); // Set the id attribute. config->set_string_value (new_key, "id", id); // Set the version attribute. config->set_string_value (new_key, "version", version); // Set the definition kind. config->set_integer_value (new_key, "def_kind", contained_kind); // Get the container's absolute name, append the new name, // and set it in the new section. ACE_TString absolute_name; config->get_string_value (container_key, "absolute_name", absolute_name); absolute_name += "::"; absolute_name += name; config->set_string_value (new_key, "absolute_name", absolute_name); // Get the container's path. ACE_TString container_id; config->get_string_value (container_key, "id", container_id); config->set_string_value (new_key, "container_id", container_id); if (container_id == "") // This Container is the Repository. { path = ""; } else { config->get_string_value (repo->repo_ids_key (), container_id.c_str (), path); path += '\\'; } path += sub_section_name; path += '\\'; path += section_name; // Store our path under our global repo id for fast lookup. config->set_string_value (repo->repo_ids_key (), id, path); return path; }