- fprintf(stderr, "done.\n");
- }
-
- // Find all streams in the configuration file, and create them.
- set<string> expecting_stream_ids = deserialized_stream_ids;
- map<pair<int, int>, MarkPool *> mark_pools;
- for (unsigned i = 0; i < config.size(); ++i) {
- if (config[i].keyword != "stream") {
- continue;
- }
- if (config[i].arguments.size() != 1) {
- fprintf(stderr, "ERROR: 'stream' takes exactly one argument\n");
- exit(1);
- }
- string stream_id = config[i].arguments[0];
- if (deserialized_stream_ids.count(stream_id) == 0) {
- servers->add_stream(stream_id);
- }
- expecting_stream_ids.erase(stream_id);
-
- // Set up marks, if so desired.
- if (config[i].parameters.count("mark")) {
- string mark_str = config[i].parameters["mark"];
- size_t split = mark_str.find_first_of('-');
- if (split == string::npos) {
- fprintf(stderr, "WARNING: Invalid mark specification '%s' (expected 'X-Y'), ignoring.\n",
- mark_str.c_str());
- continue;