From ad74ce8412eea2c554b048e379b9ca145d9694c6 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Mon, 12 Dec 2016 11:29:33 +0100 Subject: Adds the StatsDaemon to the run script and made it output to file. --- statsd/main.cpp | 5 ++++- statsd/stats.cpp | 30 ++++++++++++++++++++++++++++++ statsd/stats.hpp | 1 + 3 files changed, 35 insertions(+), 1 deletion(-) (limited to 'statsd') diff --git a/statsd/main.cpp b/statsd/main.cpp index 436e8ad..d20abc3 100644 --- a/statsd/main.cpp +++ b/statsd/main.cpp @@ -15,11 +15,12 @@ int main(int argc, char* argv[]) { po::options_description desc("Allowed options"); desc.add_options() ("help,h", "produce help message.") - ("port,p", po::value()->default_value(9200), "Set listening port.") + ("port,p", po::value()->default_value(9199), "Set listening port.") ("enable_v4", po::value()->default_value(true), "Enable/disable ipv4 accept support.") ("interface4,4", po::value()->default_value("0.0.0.0"), "Set the ipv4 address to listen on.") ("enable_v6", po::value()->default_value(true), "Enable/disable ipv6 accept support.") ("interface6,6", po::value()->default_value("::"), "Set the ipv6 address to listen on.") + ("output,o", po::value()->default_value("output.csv"), "Output file name") ; po::variables_map vm; @@ -42,4 +43,6 @@ int main(int argc, char* argv[]) { stats.run(); + stats.output(vm["output"].as()); + } diff --git a/statsd/stats.cpp b/statsd/stats.cpp index 9eeb140..cd66193 100644 --- a/statsd/stats.cpp +++ b/statsd/stats.cpp @@ -1,9 +1,14 @@ #include "stats.hpp" +#include + void Stats::accept_connection(std::unique_ptr&& socket) { auto it = connections.emplace(connections.end(), std::move(socket)); it->on_done([this, it](){ connections.erase(it); + if(connections.empty()) { + server.close(); + } }); it->async_receive([it, this](cmix_proto::CMixMessage const& message) { handle_message(it, message); @@ -47,3 +52,28 @@ Stats::Stats(ListenSettings lsettings) void Stats::run() { io_service.run(); } + +//Very inefficient... but easy. +void Stats::output(std::string file) +{ + for(auto table : data) { + std::ofstream ofs(file + "_" + table.first); + for(auto it = table.second.begin(); it != table.second.end(); ++it) { + if(it != table.second.begin()) { + ofs << ", "; + } + ofs << it->first; + } + ofs << std::endl; + for(int i = 0; i < table.second.begin()->second.size(); ++i) { + for(auto it = table.second.begin(); it != table.second.end(); ++it) { + if(it != table.second.begin()) { + ofs << ", "; + } + ofs << it->second[i]; + } + ofs << std::endl; + } + + } +} diff --git a/statsd/stats.hpp b/statsd/stats.hpp index 673022e..b6e4bca 100644 --- a/statsd/stats.hpp +++ b/statsd/stats.hpp @@ -30,4 +30,5 @@ public: Stats(ListenSettings lsettings); void run(); + void output(std::string file); }; \ No newline at end of file -- cgit v1.2.3-70-g09d2