X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=stats.cpp;fp=stats.cpp;h=b0765ed32a4e22a0b0059144f3bd7ce321c3ccdd;hp=69bbd732b634a4d0daebfed771401335317bf0f2;hb=b57530552825a13a3cd1924bda99e5e237c722a4;hpb=0e96bbf9ee0fbebd5fe3fba4d186c0e0d73c9a32 diff --git a/stats.cpp b/stats.cpp index 69bbd73..b0765ed 100644 --- a/stats.cpp +++ b/stats.cpp @@ -27,12 +27,18 @@ void StatsThread::do_work() { while (!should_stop()) { int fd; + char *filename; FILE *fp; - time_t now; + timespec now; vector client_stats; + if (clock_gettime(CLOCK_MONOTONIC_COARSE, &now) == -1) { + log_perror("clock_gettime(CLOCK_MONOTONIC_COARSE)"); + goto sleep; + } + // Open a new, temporary file. - char *filename = strdup((stats_file + ".new.XXXXXX").c_str()); + filename = strdup((stats_file + ".new.XXXXXX").c_str()); fd = mkostemp(filename, O_WRONLY); if (fd == -1) { log_perror(filename); @@ -51,7 +57,6 @@ void StatsThread::do_work() goto sleep; } - now = time(NULL); client_stats = servers->get_client_stats(); for (size_t i = 0; i < client_stats.size(); ++i) { fprintf(fp, "%s %d %d %s %d %llu %llu %llu\n", @@ -59,7 +64,7 @@ void StatsThread::do_work() client_stats[i].sock, 0, // Used to be fwmark. client_stats[i].url.c_str(), - int(now - client_stats[i].connect_time), + int(now.tv_sec - client_stats[i].connect_time.tv_sec), // Rather coarse. (long long unsigned)(client_stats[i].bytes_sent), (long long unsigned)(client_stats[i].bytes_lost), (long long unsigned)(client_stats[i].num_loss_events));