set_conf_default(conf_map, "enable_auth_domain_check", "no");
conf->get_val("port", "80", &port_str);
std::replace(port_str.begin(), port_str.end(), '+', ',');
- conf_map["listening_ports"] = port_str;
+ conf_map.emplace("listening_ports", std::move(port_str));
/* Set run_as_user. This will cause civetweb to invoke setuid() and setgid()
* based on pw_uid and pw_gid obtained from pw_name. */
std::string uid_string = g_ceph_context->get_set_uid_string();
if (! uid_string.empty()) {
- conf_map["run_as_user"] = std::move(uid_string);
+ conf_map.emplace("run_as_user", std::move(uid_string));
}
/* Prepare options for CivetWeb. */
#define dout_subsys ceph_subsys_rgw
int RGWFrontendConfig::parse_config(const string& config,
- map<string, string>& config_map)
+ std::multimap<string, string>& config_map)
{
- list<string> config_list;
- get_str_list(config, " ", config_list);
-
- list<string>::iterator iter;
- for (iter = config_list.begin(); iter != config_list.end(); ++iter) {
- string& entry = *iter;
+ for (auto& entry : get_str_vec(config, " ")) {
string key;
string val;
ssize_t pos = entry.find('=');
if (pos < 0) {
dout(0) << "framework conf key: " << entry << dendl;
- config_map[entry] = "";
+ config_map.emplace(std::move(entry), "");
continue;
}
}
dout(0) << "framework conf key: " << key << ", val: " << val << dendl;
- config_map[key] = val;
+ config_map.emplace(std::move(key), std::move(val));
}
return 0;
bool RGWFrontendConfig::get_val(const string& key, const string& def_val,
string *out)
{
- map<string, string>::iterator iter = config_map.find(key);
+ auto iter = config_map.find(key);
if (iter == config_map.end()) {
*out = def_val;
return false;
class RGWFrontendConfig {
std::string config;
- std::map<std::string, std::string> config_map;
+ std::multimap<std::string, std::string> config_map;
std::string framework;
int parse_config(const std::string& config,
- std::map<std::string, std::string>& config_map);
+ std::multimap<std::string, std::string>& config_map);
public:
RGWFrontendConfig(const std::string& config)
return config;
}
- std::map<std::string, std::string>& get_config_map() {
+ std::multimap<std::string, std::string>& get_config_map() {
return config_map;
}
struct mg_context* ctx;
RGWMongooseEnv env;
- void set_conf_default(std::map<std::string, std::string>& m,
+ void set_conf_default(std::multimap<std::string, std::string>& m,
const std::string& key,
const std::string& def_val) {
if (m.find(key) == std::end(m)) {
- m[key] = def_val;
+ m.emplace(key, def_val);
}
}