aboutsummaryrefslogtreecommitdiff
path: root/statsd
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2017-04-16 22:00:46 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2017-04-16 22:00:46 +0200
commit33f81a3a57a047326160f371f3269dfb47c59cba (patch)
treedc6e39bca104d7d440f19ae0d663b42afea2835f /statsd
parentd680f8d3848cbc3adf7d6b2c49e10abc4499cfca (diff)
downloadcmix-33f81a3a57a047326160f371f3269dfb47c59cba.tar.gz
cmix-33f81a3a57a047326160f371f3269dfb47c59cba.tar.bz2
cmix-33f81a3a57a047326160f371f3269dfb47c59cba.zip
Some cleanup and tweaked the statsd slightly.
Diffstat (limited to 'statsd')
-rw-r--r--statsd/main.cpp13
-rw-r--r--statsd/stats.cpp7
-rw-r--r--statsd/stats.hpp6
3 files changed, 17 insertions, 9 deletions
diff --git a/statsd/main.cpp b/statsd/main.cpp
index d20abc3..33ab0f8 100644
--- a/statsd/main.cpp
+++ b/statsd/main.cpp
@@ -7,7 +7,18 @@
#include <iostream>
+#include <csignal>
+
+boost::asio::io_service io_service{};
+
+void int_handler(int) {
+ io_service.stop();
+}
+
int main(int argc, char* argv[]) {
+
+ std::signal(SIGINT, int_handler);
+
namespace po = boost::program_options;
init_logging(boost::log::trivial::severity_level::trace, "statsd");
@@ -39,7 +50,7 @@ int main(int argc, char* argv[]) {
uint16_t port = vm["port"].as<uint16_t>();
ListenSettings lsettings{en4, if4, en6, if6, port, false, "", "", ""};
- Stats stats(lsettings);
+ Stats stats(io_service, lsettings);
stats.run();
diff --git a/statsd/stats.cpp b/statsd/stats.cpp
index e2a6a5d..a448449 100644
--- a/statsd/stats.cpp
+++ b/statsd/stats.cpp
@@ -6,9 +6,6 @@ void Stats::accept_connection(std::unique_ptr<boost::asio::ip::tcp::socket>&& so
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);
@@ -44,8 +41,8 @@ void Stats::handle_message(std::list<Receiver>::iterator it, cmix_proto::CMixMes
}
}
-Stats::Stats(ListenSettings lsettings)
-: io_service()
+Stats::Stats(boost::asio::io_service& io_service, ListenSettings lsettings)
+: io_service(io_service)
, server(io_service, lsettings, [this](std::unique_ptr<boost::asio::ip::tcp::socket>&& socket){accept_connection(std::move(socket));})
{}
diff --git a/statsd/stats.hpp b/statsd/stats.hpp
index b6e4bca..bcf85c5 100644
--- a/statsd/stats.hpp
+++ b/statsd/stats.hpp
@@ -10,7 +10,7 @@
#include <list>
class Stats {
- boost::asio::io_service io_service;
+ boost::asio::io_service& io_service;
Server server;
std::list<Receiver> connections;
@@ -27,8 +27,8 @@ class Stats {
void handle_message(std::list<Receiver>::iterator it, cmix_proto::CMixMessage message);
public:
- Stats(ListenSettings lsettings);
+ Stats(boost::asio::io_service& io_service, ListenSettings lsettings);
void run();
void output(std::string file);
-}; \ No newline at end of file
+};