diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2018-11-29 22:03:06 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2018-11-29 22:03:06 +0100 |
| commit | 1125802463013dd5d4e38e142886ecb5fbafa2d9 (patch) | |
| tree | 64bf4a4264ced60e7d6fdefe666c5726c6409967 | |
| parent | ca992f4f76d09965e4e62c805daa02b23266a224 (diff) | |
| download | wanda-1125802463013dd5d4e38e142886ecb5fbafa2d9.tar.xz wanda-1125802463013dd5d4e38e142886ecb5fbafa2d9.zip | |
wanda: handle sigint
| -rw-r--r-- | src/main.cpp | 19 |
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"; }; } |
