aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2018-11-29 22:03:06 +0100
committerFelix Morgner <felix.morgner@gmail.com>2018-11-29 22:03:06 +0100
commit1125802463013dd5d4e38e142886ecb5fbafa2d9 (patch)
tree64bf4a4264ced60e7d6fdefe666c5726c6409967
parentca992f4f76d09965e4e62c805daa02b23266a224 (diff)
downloadwanda-1125802463013dd5d4e38e142886ecb5fbafa2d9.tar.xz
wanda-1125802463013dd5d4e38e142886ecb5fbafa2d9.zip
wanda: handle sigint
-rw-r--r--src/main.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 1d6f2bd..6f8dcf8 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -3,6 +3,9 @@
#include "optional.hpp"
#include "control_interface.hpp"
+#include <boost/asio.hpp>
+
+#include <csignal>
#include <iostream>
#include <set>
#include <string>
@@ -50,9 +53,21 @@ int main()
auto service = boost::asio::io_service{};
auto interface = wanda::make_interface(service, ".wanda_interface");
- std::cout << interface.use_count() << '\n';
auto status = interface->start();
- std::cout << status << ' ' << status.message() << '\n';
+
+ if(status)
+ {
+ return;
+ }
+
+ auto signals = boost::asio::signal_set{service, SIGINT};
+ signals.async_wait([&](auto const & error, auto const signal){
+ if(!error && signal == SIGINT)
+ {
+ service.stop();
+ }
+ });
+
service.run();
}) || [] { std::cerr << "Directory does not exist\n"; };
}