ConfigVarPtr ConfigManager::getConfigValue (KeyValueMap &map, const std::string& name, const std::string& defaultValue, unsigned int flags) { const std::string& savedValue = _persister->getValue(name); std::string val = savedValue; if (val.empty()) { KeyValueMap::iterator i = map.find(name); if (i != map.end()) { val = i->second; map.erase(i); } } if (val.empty()) val = defaultValue; if (!savedValue.empty()) Log::info(LOG_CONFIG, "use stored value '%s' for key '%s'", val.c_str(), name.c_str()); else Log::info(LOG_CONFIG, "use value '%s' for key '%s'", val.c_str(), name.c_str()); const ConfigVarPtr& p = getConfigVar(name, val, true, flags); return p; }
ConfigVarPtr ConfigManager::getConfigValue (KeyValueMap &map, const std::string& name, const std::string& defaultValue, unsigned int flags) { // we need this no-persist check here, because this wasn't available in every version const std::string savedValue = (flags & CV_NOPERSIST) != 0 ? "" : _persister->getValue(name); std::string val = savedValue; if (val.empty()) { KeyValueMap::iterator i = map.find(name); if (i != map.end()) { val = i->second; map.erase(i); } } if (val.empty()) val = defaultValue; if (!savedValue.empty()) Log::info(LOG_COMMON, "use stored value '%s' for key '%s'", val.c_str(), name.c_str()); else Log::info(LOG_COMMON, "use value '%s' for key '%s'", val.c_str(), name.c_str()); const ConfigVarPtr& p = getConfigVar(name, val, true, flags); return p; }