/workspaces/astro/sol3-sdk/cpp/sol3/net/signal_waiter.h Source File

Space-ng SDK: /workspaces/astro/sol3-sdk/cpp/sol3/net/signal_waiter.h Source File
Space-ng SDK
signal_waiter.h
Go to the documentation of this file.
1 // Copyright (c) Space-ng, inc. All rights reserved.
2 
3 #pragma once
4 
5 #include <boost/asio/io_context.hpp>
6 #include <boost/asio/signal_set.hpp>
7 #include <spdlog/spdlog.h>
8 
9 namespace sol3::net {
10 
11 // Minimal helper to block until SIGINT or SIGTERM is received
12 class SignalWaiter {
13  public:
14  SignalWaiter(boost::asio::io_context& io)
15  : io_(io), signals_(io_, SIGINT, SIGTERM) {
16  signals_.async_wait(
17  [this](std::error_code /*ec*/, int /*signal_number*/) { io_.stop(); });
18  }
19 
20  void run(std::function<void()> on_shutdown = [] {}) {
21  SPDLOG_INFO("Running... press Ctrl+C to exit");
22  io_.run();
23  on_shutdown();
24  }
25 
26  private:
27  boost::asio::io_context& io_;
28  boost::asio::signal_set signals_;
29 };
30 
31 } // namespace sol3::net
Definition: signal_waiter.h:12
SignalWaiter(boost::asio::io_context &io)
Definition: signal_waiter.h:14
void run(std::function< void()> on_shutdown=[] {})
Definition: signal_waiter.h:20
Definition: buffer_pool.h:12