aboutsummaryrefslogtreecommitdiff
path: root/statsd
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-12-12 11:29:33 +0100
committerDennis Brentjes <d.brentjes@gmail.com>2016-12-15 09:45:30 +0100
commitad74ce8412eea2c554b048e379b9ca145d9694c6 (patch)
tree2f988b93929741d6c77207596a5747945a769b06 /statsd
parent7568c9073143edfb3bc6c0bf4263be704cb96cb5 (diff)
downloadcmix-ad74ce8412eea2c554b048e379b9ca145d9694c6.tar.gz
cmix-ad74ce8412eea2c554b048e379b9ca145d9694c6.tar.bz2
cmix-ad74ce8412eea2c554b048e379b9ca145d9694c6.zip
Adds the StatsDaemon to the run script and made it output to file.
Diffstat (limited to 'statsd')
-rw-r--r--statsd/main.cpp5
-rw-r--r--statsd/stats.cpp30
-rw-r--r--statsd/stats.hpp1
3 files changed, 35 insertions, 1 deletions
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<uint16_t>()->default_value(9200), "Set listening port.")
+ ("port,p", po::value<uint16_t>()->default_value(9199), "Set listening port.")
("enable_v4", po::value<bool>()->default_value(true), "Enable/disable ipv4 accept support.")
("interface4,4", po::value<std::string>()->default_value("0.0.0.0"), "Set the ipv4 address to listen on.")
("enable_v6", po::value<bool>()->default_value(true), "Enable/disable ipv6 accept support.")
("interface6,6", po::value<std::string>()->default_value("::"), "Set the ipv6 address to listen on.")
+ ("output,o", po::value<std::string>()->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<std::string>());
+
}
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;
+ }
+
+ }
+}
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