- CubemapStateProto state;
- if (!state.ParseFromString(serialized)) {
- fprintf(stderr, "PANIC: Failed deserialization of state.\n");
- exit(1);
+ expecting_urls.erase(stream_config.url);
+
+ // Special-case deleted streams; they were never deserialized in the first place,
+ // so just ignore them.
+ if (stream_config.src == "delete") {
+ continue;
+ }
+
+ if (deserialized_urls.count(stream_config.url) == 0) {
+ stream_index = servers->add_stream(stream_config.url,
+ stream_config.backlog_size,
+ Stream::Encoding(stream_config.encoding));
+ } else {
+ stream_index = servers->lookup_stream_by_url(stream_config.url);
+ assert(stream_index != -1);
+ servers->set_backlog_size(stream_index, stream_config.backlog_size);
+ servers->set_encoding(stream_index,
+ Stream::Encoding(stream_config.encoding));
+ }
+
+ if (stream_config.mark_pool != -1) {
+ servers->set_mark_pool(stream_index, mark_pools[stream_config.mark_pool]);
+ }
+
+ string src = stream_config.src;
+ if (!src.empty()) {
+ multimap<string, InputWithRefcount>::iterator input_it = inputs->find(src);
+ if (input_it != inputs->end()) {
+ input_it->second.input->add_destination(stream_index);
+ ++input_it->second.refcount;
+ }
+ }