mirror of
https://github.com/systemed/tilemaker.git
synced 2026-05-06 08:26:46 -04:00
feat: tilemaker-server graceful shutdown on signals (#801)
This commit is contained in:
@@ -407,6 +407,23 @@ namespace SimpleWeb {
|
||||
if(!io_service) {
|
||||
io_service = std::make_shared<io_context>();
|
||||
internal_io_service = true;
|
||||
|
||||
// Create signal_set responding to signals
|
||||
signals = std::make_shared<boost::asio::signal_set>(*io_service, SIGINT, SIGTERM);
|
||||
#ifdef SIGQUIT
|
||||
signals->add(SIGQUIT);
|
||||
#endif
|
||||
signals->async_wait(
|
||||
[ref(io_service), this](const boost::system::error_code &ec, int signal_number) {
|
||||
if (!ec) {
|
||||
std::cout << "Signal number " << signal_number << std::endl;
|
||||
std::cout << "Gracefully stopping server"<< std::endl;
|
||||
io_service->stop();
|
||||
} else {
|
||||
std::cout << "Error " << ec.value() << " - " << ec.message()
|
||||
<< " - Signal number - " << signal_number << std::endl;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(!acceptor)
|
||||
@@ -499,6 +516,7 @@ namespace SimpleWeb {
|
||||
std::mutex start_stop_mutex;
|
||||
|
||||
bool internal_io_service = false;
|
||||
std::shared_ptr<boost::asio::signal_set> signals;
|
||||
|
||||
std::unique_ptr<asio::ip::tcp::acceptor> acceptor;
|
||||
std::vector<std::thread> threads;
|
||||
|
||||
+1
-1
@@ -77,7 +77,6 @@ int main(int argc, char* argv[]) {
|
||||
server.config.port = port;
|
||||
sqlite::database db;
|
||||
db.init(input);
|
||||
cout << "Starting local server on port " << server.config.port << endl;
|
||||
|
||||
server.resource["^/([0-9]+)/([0-9]+)/([0-9]+).pbf$"]["GET"] = [&db](shared_ptr<HttpServer::Response> response, shared_ptr<HttpServer::Request> request) {
|
||||
int32_t zoom = stoi(request->path_match[1]);
|
||||
@@ -146,5 +145,6 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
};
|
||||
|
||||
cout << "Starting local server on port " << server.config.port << endl;
|
||||
server.start();
|
||||
}
|
||||
Reference in New Issue
Block a user