aboutsummaryrefslogtreecommitdiff
path: root/statsd/stats.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'statsd/stats.cpp')
-rw-r--r--statsd/stats.cpp30
1 files changed, 30 insertions, 0 deletions
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 <fstream>
+
void Stats::accept_connection(std::unique_ptr<boost::asio::ip::tcp::socket>&& 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;
+ }
+
+ }
+}