X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=main.cpp;fp=main.cpp;h=7022655b3c34d396a4f38405091d5b42dfdad994;hp=33ed9dfba726bc8b5332d42a3fcae2e4ceca54f5;hb=3b73724f08274a2c5a435d6a834bc10fcf3db41b;hpb=e6cbdf497326c42b375dbb118ca1ec0a59644c32 diff --git a/main.cpp b/main.cpp index 33ed9df..7022655 100644 --- a/main.cpp +++ b/main.cpp @@ -97,15 +97,13 @@ CubemapStateProto collect_state(const timespec &serialize_start, CubemapStateProto state = servers->serialize(); // Fills streams() and clients(). state.set_serialize_start_sec(serialize_start.tv_sec); state.set_serialize_start_usec(serialize_start.tv_nsec / 1000); - - for (size_t i = 0; i < acceptors.size(); ++i) { - state.add_acceptors()->MergeFrom(acceptors[i]->serialize()); + + for (Acceptor *acceptor : acceptors) { + state.add_acceptors()->MergeFrom(acceptor->serialize()); } - for (multimap::const_iterator input_it = inputs.begin(); - input_it != inputs.end(); - ++input_it) { - state.add_inputs()->MergeFrom(input_it->second.input->serialize()); + for (const auto &key_and_input_with_refcount : inputs) { + state.add_inputs()->MergeFrom(key_and_input_with_refcount.second.input->serialize()); } return state; @@ -117,11 +115,9 @@ vector create_acceptors( map *deserialized_acceptors) { vector acceptors; - for (unsigned i = 0; i < config.acceptors.size(); ++i) { - const AcceptorConfig &acceptor_config = config.acceptors[i]; + for (const AcceptorConfig &acceptor_config : config.acceptors) { Acceptor *acceptor = NULL; - map::iterator deserialized_acceptor_it = - deserialized_acceptors->find(acceptor_config); + const auto deserialized_acceptor_it = deserialized_acceptors->find(acceptor_config); if (deserialized_acceptor_it != deserialized_acceptors->end()) { acceptor = deserialized_acceptor_it->second; deserialized_acceptors->erase(deserialized_acceptor_it); @@ -136,12 +132,9 @@ vector create_acceptors( } // Close all acceptors that are no longer in the configuration file. - for (map::iterator - acceptor_it = deserialized_acceptors->begin(); - acceptor_it != deserialized_acceptors->end(); - ++acceptor_it) { - acceptor_it->second->close_socket(); - delete acceptor_it->second; + for (auto &config_and_acceptor : *deserialized_acceptors) { + config_and_acceptor.second->close_socket(); + delete config_and_acceptor.second; } return acceptors; @@ -171,14 +164,12 @@ void create_config_input(const string &src, Input::Encoding encoding, multimap *inputs) { - for (unsigned i = 0; i < config.streams.size(); ++i) { - const StreamConfig &stream_config = config.streams[i]; + for (const StreamConfig &stream_config : config.streams) { if (stream_config.src != "delete") { create_config_input(stream_config.src, Input::Encoding(stream_config.src_encoding), inputs); } } - for (unsigned i = 0; i < config.udpstreams.size(); ++i) { - const UDPStreamConfig &udpstream_config = config.udpstreams[i]; + for (const UDPStreamConfig &udpstream_config : config.udpstreams) { create_config_input(udpstream_config.src, Input::INPUT_ENCODING_RAW, inputs); } } @@ -189,8 +180,7 @@ void create_streams(const Config &config, { // HTTP streams. set expecting_urls = deserialized_urls; - for (unsigned i = 0; i < config.streams.size(); ++i) { - const StreamConfig &stream_config = config.streams[i]; + for (const StreamConfig &stream_config : config.streams) { int stream_index; expecting_urls.erase(stream_config.url); @@ -223,7 +213,7 @@ void create_streams(const Config &config, string src = stream_config.src; Input::Encoding src_encoding = Input::Encoding(stream_config.src_encoding); if (!src.empty()) { - multimap::iterator input_it = inputs->find(make_pair(src, src_encoding)); + const auto input_it = inputs->find(make_pair(src, src_encoding)); if (input_it != inputs->end()) { input_it->second.input->add_destination(stream_index); ++input_it->second.refcount; @@ -232,10 +222,7 @@ void create_streams(const Config &config, } // Warn about any streams servers we've lost. - for (set::const_iterator stream_it = expecting_urls.begin(); - stream_it != expecting_urls.end(); - ++stream_it) { - string url = *stream_it; + for (const string &url : expecting_urls) { log(WARNING, "stream '%s' disappeared from the configuration file. " "It will not be deleted, but clients will not get any new inputs. " "If you really meant to delete it, set src=delete and reload.", @@ -243,8 +230,7 @@ void create_streams(const Config &config, } // UDP streams. - for (unsigned i = 0; i < config.udpstreams.size(); ++i) { - const UDPStreamConfig &udpstream_config = config.udpstreams[i]; + for (const UDPStreamConfig &udpstream_config : config.udpstreams) { int stream_index = servers->add_udpstream( udpstream_config.dst, udpstream_config.pacing_rate, @@ -253,7 +239,7 @@ void create_streams(const Config &config, string src = udpstream_config.src; if (!src.empty()) { - multimap::iterator input_it = inputs->find(make_pair(src, Input::INPUT_ENCODING_RAW)); + auto input_it = inputs->find(make_pair(src, Input::INPUT_ENCODING_RAW)); assert(input_it != inputs->end()); input_it->second.input->add_destination(stream_index); ++input_it->second.refcount; @@ -261,20 +247,19 @@ void create_streams(const Config &config, } // HTTP gen204 endpoints. - for (unsigned i = 0; i < config.pings.size(); ++i) { - const Gen204Config &ping_config = config.pings[i]; + for (const Gen204Config &ping_config : config.pings) { servers->add_gen204(ping_config.url, ping_config.allow_origin); } } void open_logs(const vector &log_destinations) { - for (size_t i = 0; i < log_destinations.size(); ++i) { - if (log_destinations[i].type == LogConfig::LOG_TYPE_FILE) { - add_log_destination_file(log_destinations[i].filename); - } else if (log_destinations[i].type == LogConfig::LOG_TYPE_CONSOLE) { + for (const LogConfig &log_destination : log_destinations) { + if (log_destination.type == LogConfig::LOG_TYPE_FILE) { + add_log_destination_file(log_destination.filename); + } else if (log_destination.type == LogConfig::LOG_TYPE_CONSOLE) { add_log_destination_console(); - } else if (log_destinations[i].type == LogConfig::LOG_TYPE_SYSLOG) { + } else if (log_destination.type == LogConfig::LOG_TYPE_SYSLOG) { add_log_destination_syslog(); } else { assert(false); @@ -324,8 +309,7 @@ bool dry_run_config(const string &argv0, const string &config_filename) void find_deleted_streams(const Config &config, set *deleted_urls) { - for (unsigned i = 0; i < config.streams.size(); ++i) { - const StreamConfig &stream_config = config.streams[i]; + for (const StreamConfig &stream_config : config.streams) { if (stream_config.src == "delete") { log(INFO, "Deleting stream '%s'.", stream_config.url.c_str()); deleted_urls->insert(stream_config.url); @@ -447,18 +431,16 @@ start: // Deserialize the streams. map stream_headers_for_url; // See below. - for (int i = 0; i < loaded_state.streams_size(); ++i) { - const StreamProto &stream = loaded_state.streams(i); - + for (const StreamProto &stream : loaded_state.streams()) { if (deleted_urls.count(stream.url()) != 0) { // Delete the stream backlogs. - for (int j = 0; j < stream.data_fds_size(); ++j) { - safe_close(stream.data_fds(j)); + for (const int fd : stream.data_fds()) { + safe_close(fd); } } else { vector data_fds; - for (int j = 0; j < stream.data_fds_size(); ++j) { - data_fds.push_back(stream.data_fds(j)); + for (const int fd : stream.data_fds()) { + data_fds.push_back(fd); } servers->add_stream_from_serialized(stream, data_fds); @@ -469,9 +451,7 @@ start: } // Deserialize the inputs. Note that we don't actually add them to any stream yet. - for (int i = 0; i < loaded_state.inputs_size(); ++i) { - InputProto serialized_input = loaded_state.inputs(i); - + for (const InputProto &serialized_input : loaded_state.inputs()) { InputWithRefcount iwr; iwr.input = create_input(serialized_input); iwr.refcount = 0; @@ -484,14 +464,14 @@ start: } // Deserialize the acceptors. - for (int i = 0; i < loaded_state.acceptors_size(); ++i) { + for (const AcceptorProto &serialized_acceptor : loaded_state.acceptors()) { AcceptorConfig config; - config.addr = extract_address_from_acceptor_proto(loaded_state.acceptors(i)); - config.certificate_chain = loaded_state.acceptors(i).certificate_chain(); - config.private_key = loaded_state.acceptors(i).private_key(); + config.addr = extract_address_from_acceptor_proto(serialized_acceptor); + config.certificate_chain = serialized_acceptor.certificate_chain(); + config.private_key = serialized_acceptor.private_key(); deserialized_acceptors.insert(make_pair( config, - new Acceptor(loaded_state.acceptors(i)))); + new Acceptor(serialized_acceptor))); } log(INFO, "Deserialization done."); @@ -528,8 +508,7 @@ start: servers->run(); // Now delete all inputs that are longer in use, and start the others. - for (multimap::iterator input_it = inputs.begin(); - input_it != inputs.end(); ) { + for (auto input_it = inputs.begin(); input_it != inputs.end(); ) { if (input_it->second.refcount == 0) { if (input_it->first.second == Input::INPUT_ENCODING_RAW) { log(WARNING, "Raw input '%s' no longer in use, closing.", @@ -558,9 +537,8 @@ start: InputStatsThread *input_stats_thread = NULL; if (!config.input_stats_file.empty()) { vector inputs_no_refcount; - for (multimap::iterator input_it = inputs.begin(); - input_it != inputs.end(); ++input_it) { - inputs_no_refcount.push_back(input_it->second.input); + for (const auto &key_and_input_with_refcount : inputs) { + inputs_no_refcount.push_back(key_and_input_with_refcount.second.input); } input_stats_thread = new InputStatsThread(config.input_stats_file, config.input_stats_interval, inputs_no_refcount); @@ -603,13 +581,11 @@ start: stats_thread->stop(); delete stats_thread; } - for (size_t i = 0; i < acceptors.size(); ++i) { - acceptors[i]->stop(); + for (Acceptor *acceptor : acceptors) { + acceptor->stop(); } - for (multimap::iterator input_it = inputs.begin(); - input_it != inputs.end(); - ++input_it) { - input_it->second.input->stop(); + for (const auto &key_and_input_with_refcount : inputs) { + key_and_input_with_refcount.second.input->stop(); } servers->stop();