X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=cubemap.cpp;h=253ec3721734d9231e66a986adda2c4cdef9cb39;hp=4f03feae49f5073abc4d8f66bde35cd4632d8146;hb=afbb7df7e933db2f4be2dbeab6bc90ef326785d9;hpb=b59fa7ce2d47f135ea027548cc89f937a5fa875b 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();