Skip to content

Commit aa00786

Browse files
authored
feat: tilemaker-server graceful shutdown on signals (#801)
1 parent 830f85c commit aa00786

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

server/Simple-Web-Server/server_http.hpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,23 @@ namespace SimpleWeb {
407407
if(!io_service) {
408408
io_service = std::make_shared<io_context>();
409409
internal_io_service = true;
410+
411+
// Create signal_set responding to signals
412+
signals = std::make_shared<boost::asio::signal_set>(*io_service, SIGINT, SIGTERM);
413+
#ifdef SIGQUIT
414+
signals->add(SIGQUIT);
415+
#endif
416+
signals->async_wait(
417+
[ref(io_service), this](const boost::system::error_code &ec, int signal_number) {
418+
if (!ec) {
419+
std::cout << "Signal number " << signal_number << std::endl;
420+
std::cout << "Gracefully stopping server"<< std::endl;
421+
io_service->stop();
422+
} else {
423+
std::cout << "Error " << ec.value() << " - " << ec.message()
424+
<< " - Signal number - " << signal_number << std::endl;
425+
}
426+
});
410427
}
411428

412429
if(!acceptor)
@@ -499,6 +516,7 @@ namespace SimpleWeb {
499516
std::mutex start_stop_mutex;
500517

501518
bool internal_io_service = false;
519+
std::shared_ptr<boost::asio::signal_set> signals;
502520

503521
std::unique_ptr<asio::ip::tcp::acceptor> acceptor;
504522
std::vector<std::thread> threads;

server/server.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ int main(int argc, char* argv[]) {
7777
server.config.port = port;
7878
sqlite::database db;
7979
db.init(input);
80-
cout << "Starting local server on port " << server.config.port << endl;
8180

8281
server.resource["^/([0-9]+)/([0-9]+)/([0-9]+).pbf$"]["GET"] = [&db](shared_ptr<HttpServer::Response> response, shared_ptr<HttpServer::Request> request) {
8382
int32_t zoom = stoi(request->path_match[1]);
@@ -146,5 +145,6 @@ int main(int argc, char* argv[]) {
146145
}
147146
};
148147

148+
cout << "Starting local server on port " << server.config.port << endl;
149149
server.start();
150150
}

0 commit comments

Comments
 (0)