added signal handler

This commit is contained in:
Scott E. Graves 2025-02-27 14:29:21 -06:00
parent 0e21d93bb3
commit 722357388c
3 changed files with 21 additions and 3 deletions

View File

@ -282,6 +282,7 @@ enum class exit_code : std::int32_t {
unpin_failed = -17,
init_failed = -18,
ui_mount_failed = -19,
exception = -20,
};
enum http_error_codes : std::int32_t {

View File

@ -146,10 +146,17 @@ auto main(int argc, char **argv) -> int {
(res == exit_code::option_not_found) &&
(idx < utils::cli::options::option_list.size());
idx++) {
res = cli::actions::perform_action(
utils::cli::options::option_list[idx], args, data_directory, prov,
unique_id, user, password);
try {
res = cli::actions::perform_action(
utils::cli::options::option_list[idx], args, data_directory, prov,
unique_id, user, password);
} catch (const std::exception &ex) {
res = exit_code::exception;
} catch (...) {
res = exit_code::exception;
}
}
if (res == exit_code::option_not_found) {
res = cli::actions::mount(args, data_directory, mount_result, prov,
remote_host, remote_port, unique_id);

View File

@ -69,6 +69,16 @@ handlers::handlers(mgmt_app_config *config, httplib::Server *server)
});
event_system::instance().start();
static auto *this_server{server_};
static const auto quit_handler = [](int /* sig */) { this_server->stop(); };
std::signal(SIGINT, quit_handler);
#if !defined(_WIN32)
std::signal(SIGQUIT, quit_handler);
#endif // !defined(_WIN32)
std::signal(SIGTERM, quit_handler);
server_->listen("127.0.0.1", config_->get_api_port());
}