Skip to content

Commit 71e9cdd

Browse files
committed
Handle exit signals.
1 parent 6c24aa3 commit 71e9cdd

3 files changed

Lines changed: 24 additions & 2 deletions

File tree

src/main.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,27 @@
11
#include <memory>
2+
#include <signal.h>
23

34
#include <boost/json/src.hpp>
45

56
#include "server/server.h"
67

8+
std::shared_ptr<server::server> database_server;
9+
10+
void handle_signal(int signum)
11+
{
12+
database_server->close();
13+
14+
exit(signum);
15+
}
16+
717
int main(void)
818
{
9-
std::make_shared<server::server>(8080)->serve();
19+
database_server = std::make_shared<server::server>(8080);
20+
21+
signal(SIGINT, handle_signal);
22+
signal(SIGTERM, handle_signal);
23+
24+
database_server->serve();
1025

1126
return EXIT_SUCCESS;
1227
}

src/server/server.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ server::server::server(
1515
acceptor(boost::asio::make_strand(io_context)),
1616
repository(repository::rocksdb_repository()),
1717
router(router::router(repository))
18-
{
18+
{
1919
boost::beast::error_code error;
2020
boost::asio::ip::tcp::endpoint endpoint { boost::asio::ip::address_v4::any(), port };
2121

@@ -81,3 +81,8 @@ void server::server::accept()
8181
boost::asio::make_strand(io_context),
8282
boost::beast::bind_front_handler(&server::on_accept, shared_from_this()));
8383
}
84+
85+
void server::server::close()
86+
{
87+
acceptor.close();
88+
}

src/server/server.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ namespace server
3737

3838
boost::asio::ip::port_type port() const;
3939

40+
void close();
41+
4042
private:
4143
void accept();
4244
};

0 commit comments

Comments
 (0)