From afbb7df7e933db2f4be2dbeab6bc90ef326785d9 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 7 Apr 2013 16:10:39 +0200 Subject: [PATCH] Fetch num_servers from the config file. --- cubemap.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/cubemap.cpp b/cubemap.cpp index 4f03fea..253ec37 100644 --- a/cubemap.cpp +++ b/cubemap.cpp @@ -22,7 +22,6 @@ #include "input.h" #include "state.pb.h" -#define NUM_SERVERS 4 #define STREAM_ID "stream" #define STREAM_URL "http://gruessi.zrh.sesse.net:4013/" @@ -264,7 +263,7 @@ int main(int argc, char **argv) vector config = parse_config(config_filename); // Go through each (parsed) configuration line. - int port = -1; + int port = -1, num_servers = -1; for (unsigned i = 0; i < config.size(); ++i) { if (config[i].keyword == "port") { if (config[i].parameters.size() > 0 || @@ -274,13 +273,25 @@ int main(int argc, char **argv) } port = atoi(config[i].arguments[0].c_str()); } + if (config[i].keyword == "num_servers") { + if (config[i].parameters.size() > 0 || + config[i].arguments.size() != 1) { + fprintf(stderr, "ERROR: 'num_servers' takes one argument and no parameters\n"); + exit(1); + } + num_servers = atoi(config[i].arguments[0].c_str()); + } } if (port <= 0 || port > 65535) { fprintf(stderr, "ERROR: Missing or invalid 'port' statement in config file\n"); exit(1); } + if (num_servers <= 0 || num_servers > 20000) { // 20000 is an insanely high max limit. + fprintf(stderr, "ERROR: Missing or invalid 'num_servers' statement in config file\n"); + exit(1); + } - servers = new ServerPool(NUM_SERVERS); + servers = new ServerPool(num_servers); int server_sock = -1, old_port = -1; if (argc == 4 && strcmp(argv[2], "-state") == 0) { @@ -339,7 +350,7 @@ int main(int argc, char **argv) CubemapStateProto state; state.set_server_sock(server_sock); state.set_port(port); - for (int i = 0; i < NUM_SERVERS; ++i) { + for (int i = 0; i < num_servers; ++i) { servers->get_server(i)->stop(); CubemapStateProto local_state = servers->get_server(i)->serialize(); -- 2.39.2