]> git.sesse.net Git - cubemap/blobdiff - config.cpp
Use C++11 range-based for loops and auto wherever it makes sense.
[cubemap] / config.cpp
index 47118b48612e18bce0966c7bb696326532cf277e..0573f5420be84b5cd78c914f63745cb3959062c6 100644 (file)
@@ -144,16 +144,16 @@ bool read_config(const string &filename, vector<ConfigLine> *lines)
 
 bool fetch_config_string(const vector<ConfigLine> &config, const string &keyword, string *value)
 {
-       for (unsigned i = 0; i < config.size(); ++i) {
-               if (config[i].keyword != keyword) {
+       for (const ConfigLine &line : config) {
+               if (line.keyword != keyword) {
                        continue;
                }
-               if (config[i].parameters.size() > 0 ||
-                   config[i].arguments.size() != 1) {
+               if (line.parameters.size() > 0 ||
+                   line.arguments.size() != 1) {
                        log(ERROR, "'%s' takes one argument and no parameters", keyword.c_str());
                        return false;
                }
-               *value = config[i].arguments[0];
+               *value = line.arguments[0];
                return true;
        }
        return false;
@@ -161,16 +161,16 @@ bool fetch_config_string(const vector<ConfigLine> &config, const string &keyword
 
 bool fetch_config_int(const vector<ConfigLine> &config, const string &keyword, int *value)
 {
-       for (unsigned i = 0; i < config.size(); ++i) {
-               if (config[i].keyword != keyword) {
+       for (const ConfigLine &line : config) {
+               if (line.keyword != keyword) {
                        continue;
                }
-               if (config[i].parameters.size() > 0 ||
-                   config[i].arguments.size() != 1) {
+               if (line.parameters.size() > 0 ||
+                   line.arguments.size() != 1) {
                        log(ERROR, "'%s' takes one argument and no parameters", keyword.c_str());
                        return false;
                }
-               *value = atoi(config[i].arguments[0].c_str());  // TODO: verify int validity.
+               *value = atoi(line.arguments[0].c_str());  // TODO: verify int validity.
                return true;
        }
        return false;
@@ -215,7 +215,7 @@ bool parse_tls_parameters(const map<string, string> &parameters, AcceptorConfig
 {
        bool has_cert = false, has_key = false;
 
-       map<string, string>::const_iterator tls_cert_it = parameters.find("tls_cert");
+       auto tls_cert_it = parameters.find("tls_cert");
        if (tls_cert_it != parameters.end()) {
                if (!load_file_to_string(tls_cert_it->second, 1048576, &acceptor->certificate_chain)) {
                        return false;
@@ -240,7 +240,7 @@ bool parse_tls_parameters(const map<string, string> &parameters, AcceptorConfig
                has_cert = true;
        }
 
-       map<string, string>::const_iterator tls_key_it = parameters.find("tls_key");
+       auto tls_key_it = parameters.find("tls_key");
        if (tls_key_it != parameters.end()) {
                if (!load_file_to_string(tls_key_it->second, 1048576, &acceptor->private_key)) {
                        return false;
@@ -325,7 +325,7 @@ bool parse_stream(const ConfigLine &line, Config *config)
        StreamConfig stream;
        stream.url = line.arguments[0];
 
-       map<string, string>::const_iterator src_it = line.parameters.find("src");
+       const auto src_it = line.parameters.find("src");
        if (src_it == line.parameters.end()) {
                log(WARNING, "stream '%s' has no src= attribute, clients will not get any data.",
                        stream.url.c_str());
@@ -334,14 +334,14 @@ bool parse_stream(const ConfigLine &line, Config *config)
                // TODO: Verify that the URL is parseable?
        }
 
-       map<string, string>::const_iterator backlog_it = line.parameters.find("backlog_size");
+       const auto backlog_it = line.parameters.find("backlog_size");
        if (backlog_it == line.parameters.end()) {
                stream.backlog_size = DEFAULT_BACKLOG_SIZE;
        } else {
                stream.backlog_size = atoi(backlog_it->second.c_str());
        }
 
-       map<string, string>::const_iterator prebuffer_it = line.parameters.find("force_prebuffer");
+       const auto prebuffer_it = line.parameters.find("force_prebuffer");
        if (prebuffer_it == line.parameters.end()) {
                stream.prebuffering_bytes = 0;
        } else {
@@ -349,7 +349,7 @@ bool parse_stream(const ConfigLine &line, Config *config)
        }
 
        // Parse output encoding.
-       map<string, string>::const_iterator encoding_parm_it = line.parameters.find("encoding");
+       const auto encoding_parm_it = line.parameters.find("encoding");
        if (encoding_parm_it == line.parameters.end() ||
            encoding_parm_it->second == "raw") {
                stream.encoding = StreamConfig::STREAM_ENCODING_RAW;
@@ -361,7 +361,7 @@ bool parse_stream(const ConfigLine &line, Config *config)
        }
 
        // Parse input encoding.
-       map<string, string>::const_iterator src_encoding_parm_it = line.parameters.find("src_encoding");
+       const auto src_encoding_parm_it = line.parameters.find("src_encoding");
        if (src_encoding_parm_it == line.parameters.end() ||
            src_encoding_parm_it->second == "metacube") {
                stream.src_encoding = StreamConfig::STREAM_ENCODING_METACUBE;
@@ -373,7 +373,7 @@ bool parse_stream(const ConfigLine &line, Config *config)
        }
 
        // Parse the pacing rate, converting from kilobits to bytes as needed.
-       map<string, string>::const_iterator pacing_rate_it = line.parameters.find("pacing_rate_kbit");
+       const auto pacing_rate_it = line.parameters.find("pacing_rate_kbit");
        if (pacing_rate_it == line.parameters.end()) {
                stream.pacing_rate = ~0U;
        } else {
@@ -398,7 +398,7 @@ bool parse_udpstream(const ConfigLine &line, Config *config)
                return false;
        }
 
-       map<string, string>::const_iterator src_it = line.parameters.find("src");
+       const auto src_it = line.parameters.find("src");
        if (src_it == line.parameters.end()) {
                // This is pretty meaningless, but OK, consistency is good.
                log(WARNING, "udpstream to %s has no src= attribute, clients will not get any data.",
@@ -409,7 +409,7 @@ bool parse_udpstream(const ConfigLine &line, Config *config)
        }
 
        // Parse the pacing rate, converting from kilobits to bytes as needed.
-       map<string, string>::const_iterator pacing_rate_it = line.parameters.find("pacing_rate_kbit");
+       const auto pacing_rate_it = line.parameters.find("pacing_rate_kbit");
        if (pacing_rate_it == line.parameters.end()) {
                udpstream.pacing_rate = ~0U;
        } else {
@@ -417,7 +417,7 @@ bool parse_udpstream(const ConfigLine &line, Config *config)
        }
 
        // Parse the TTL. The same value is used for unicast and multicast.
-       map<string, string>::const_iterator ttl_it = line.parameters.find("ttl");
+       const auto ttl_it = line.parameters.find("ttl");
        if (ttl_it == line.parameters.end()) {
                udpstream.ttl = -1;
        } else {
@@ -425,7 +425,7 @@ bool parse_udpstream(const ConfigLine &line, Config *config)
        }
 
        // Parse the multicast interface index.
-       map<string, string>::const_iterator multicast_iface_it = line.parameters.find("multicast_output_interface");
+       const auto multicast_iface_it = line.parameters.find("multicast_output_interface");
        if (multicast_iface_it == line.parameters.end()) {
                udpstream.multicast_iface_index = -1;
        } else {
@@ -451,7 +451,7 @@ bool parse_gen204(const ConfigLine &line, Config *config)
        gen204.url = line.arguments[0];
 
        // Parse the CORS origin, if it exists.
-       map<string, string>::const_iterator allow_origin_it = line.parameters.find("allow_origin");
+       const auto allow_origin_it = line.parameters.find("allow_origin");
        if (allow_origin_it != line.parameters.end()) {
                gen204.allow_origin = allow_origin_it->second;
        }
@@ -468,7 +468,7 @@ bool parse_error_log(const ConfigLine &line, Config *config)
        }
 
        LogConfig log_config;
-       map<string, string>::const_iterator type_it = line.parameters.find("type");
+       const auto type_it = line.parameters.find("type");
        if (type_it == line.parameters.end()) {
                log(ERROR, "'error_log' has no type= parameter");
                return false; 
@@ -487,7 +487,7 @@ bool parse_error_log(const ConfigLine &line, Config *config)
        }
 
        if (log_config.type == LogConfig::LOG_TYPE_FILE) {
-               map<string, string>::const_iterator filename_it = line.parameters.find("filename");
+               const auto filename_it = line.parameters.find("filename");
                if (filename_it == line.parameters.end()) {
                        log(ERROR, "error_log type 'file' with no filename= parameter");
                        return false; 
@@ -536,8 +536,7 @@ bool parse_config(const string &filename, Config *config)
        
        fetch_config_string(lines, "access_log", &config->access_log_file);
 
-       for (size_t i = 0; i < lines.size(); ++i) {
-               const ConfigLine &line = lines[i];
+       for (const ConfigLine &line : lines) {
                if (line.keyword == "num_servers" ||
                    line.keyword == "stats_file" ||
                    line.keyword == "stats_interval" ||