From 394525186910b823fe47f46898c13b0827835446 Mon Sep 17 00:00:00 2001 From: Nick Rizzo Date: Sat, 19 Dec 2020 02:15:57 -0500 Subject: [PATCH] [fix] Make signal handler optional --- include/crow/app.h | 19 +++++++++++++++++++ include/crow/http_server.h | 10 ++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/crow/app.h b/include/crow/app.h index 8eb0de3e6..780a1b1e9 100644 --- a/include/crow/app.h +++ b/include/crow/app.h @@ -82,6 +82,18 @@ namespace crow return router_.new_rule_tagged(std::move(rule)); } + self_t& signal_clear() + { + signals_.clear(); + return *this; + } + + self_t& signal_add(int signal_number) + { + signals_.push_back(signal_number); + return *this; + } + ///Set the port that Crow will handle requests on self_t& port(std::uint16_t port) { @@ -191,6 +203,11 @@ namespace crow { server_ = std::move(std::unique_ptr(new server_t(this, bindaddr_, port_, server_name_, &middlewares_, concurrency_, nullptr))); server_->set_tick_function(tick_interval_, tick_function_); + server_->signal_clear(); + for (auto snum : signals_) + { + server_->signal_add(snum); + } notify_server_start(); server_->run(); } @@ -332,6 +349,8 @@ namespace crow #endif std::unique_ptr server_; + std::vector signals_{SIGINT, SIGTERM}; + bool server_started_{false}; std::condition_variable cv_started_; std::mutex start_mutex_; diff --git a/include/crow/http_server.h b/include/crow/http_server.h index 936e903fe..1c420c8bd 100644 --- a/include/crow/http_server.h +++ b/include/crow/http_server.h @@ -173,6 +173,16 @@ namespace crow io_service->stop(); } + void signal_clear() + { + signals_.clear(); + } + + void signal_add(int signal_number) + { + signals_.add(signal_number); + } + private: asio::io_service& pick_io_service() {