X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=config.cpp;h=405033868f65f8c804cff3570e4e384dbf198d94;hp=660090d4a237b3c1fb22cf9793988838ed47ae72;hb=9abb89bcf7940e2ada9d708f86a218a56334f68d;hpb=4856c49f1b63753ce86ad759ee649a1117628a8e diff --git a/config.cpp b/config.cpp index 660090d..4050338 100644 --- a/config.cpp +++ b/config.cpp @@ -189,12 +189,12 @@ bool parse_stream(const ConfigLine &line, Config *config) } StreamConfig stream; - stream.stream_id = line.arguments[0]; + stream.url = line.arguments[0]; map::const_iterator 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.stream_id.c_str()); + stream.url.c_str()); } else { stream.src = src_it->second; // TODO: Verify that the URL is parseable? @@ -207,6 +207,18 @@ bool parse_stream(const ConfigLine &line, Config *config) stream.backlog_size = atoi(backlog_it->second.c_str()); } + // Parse encoding. + map::const_iterator 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; + } else if (encoding_parm_it->second == "metacube") { + stream.encoding = StreamConfig::STREAM_ENCODING_METACUBE; + } else { + log(ERROR, "Parameter 'encoding' must be either 'raw' (default) or 'metacube'"); + return false; + } + // Parse marks, if so desired. map::const_iterator mark_parm_it = line.parameters.find("mark"); if (mark_parm_it == line.parameters.end()) { @@ -269,6 +281,8 @@ bool parse_config(const string &filename, Config *config) return false; } + config->daemonize = false; + if (!fetch_config_int(lines, "num_servers", &config->num_servers)) { log(ERROR, "Missing 'num_servers' statement in config file."); return false; @@ -285,12 +299,15 @@ bool parse_config(const string &filename, Config *config) if (has_stats_interval && !has_stats_file) { log(WARNING, "'stats_interval' given, but no 'stats_file'. No statistics will be written."); } + + fetch_config_string(lines, "access_log", &config->access_log_file); for (size_t i = 0; i < lines.size(); ++i) { const ConfigLine &line = lines[i]; if (line.keyword == "num_servers" || line.keyword == "stats_file" || - line.keyword == "stats_interval") { + line.keyword == "stats_interval" || + line.keyword == "access_log") { // Already taken care of, above. } else if (line.keyword == "port") { if (!parse_port(line, config)) { @@ -304,6 +321,8 @@ bool parse_config(const string &filename, Config *config) if (!parse_error_log(line, config)) { return false; } + } else if (line.keyword == "daemonize") { + config->daemonize = true; } else { log(ERROR, "Unknown configuration keyword '%s'.", line.keyword.c_str());