- now = time(NULL);
- client_stats = servers->get_client_stats();
- for (size_t i = 0; i < client_stats.size(); ++i) {
- fprintf(fp, "%s %s %d %llu\n",
- client_stats[i].remote_addr.c_str(),
- client_stats[i].stream_id.c_str(),
- int(now - client_stats[i].connect_time),
- (long long unsigned)(client_stats[i].bytes_sent));
- }
- if (fclose(fp) == EOF) {
- perror("fclose");
- unlink(filename);
- free(filename);
- goto sleep;
- }
-
- if (rename(filename, parms->stats_file.c_str()) == -1) {
- perror("rename");
- unlink(filename);
+ for (multimap<string, InputWithRefcount>::const_iterator input_it = inputs.begin();
+ input_it != inputs.end();
+ ++input_it) {
+ state.add_inputs()->MergeFrom(input_it->second.input->serialize());
+ }
+
+ return state;
+}
+
+// Find all port statements in the configuration file, and create acceptors for htem.
+vector<Acceptor *> create_acceptors(
+ const Config &config,
+ map<int, Acceptor *> *deserialized_acceptors)
+{
+ vector<Acceptor *> acceptors;
+ for (unsigned i = 0; i < config.acceptors.size(); ++i) {
+ const AcceptorConfig &acceptor_config = config.acceptors[i];
+ Acceptor *acceptor = NULL;
+ map<int, Acceptor *>::iterator deserialized_acceptor_it =
+ deserialized_acceptors->find(acceptor_config.port);
+ if (deserialized_acceptor_it != deserialized_acceptors->end()) {
+ acceptor = deserialized_acceptor_it->second;
+ deserialized_acceptors->erase(deserialized_acceptor_it);
+ } else {
+ int server_sock = create_server_socket(acceptor_config.port, TCP_SOCKET);
+ acceptor = new Acceptor(server_sock, acceptor_config.port);