22#include "util/async/context/BasicExecutionContext.hpp"
23#include "util/config/ConfigDefinition.hpp"
24#include "util/log/Logger.hpp"
26#include <boost/asio/executor_work_guard.hpp>
27#include <boost/asio/io_context.hpp>
28#include <boost/asio/steady_timer.hpp>
29#include <boost/signals2/signal.hpp>
30#include <boost/signals2/variadic_signal.hpp>
42class SignalsHandlerStatic;
51 std::chrono::steady_clock::duration gracefulPeriod_;
53 std::optional<async::PoolExecutionContext::ScheduledOperation<void>> timer_;
55 boost::signals2::signal<void()> stopSignal_;
56 std::function<void(
int)> stopHandler_;
57 std::function<void(
int)> secondSignalHandler_;
59 friend class impl::SignalsHandlerStatic;
65 enum class Priority { StopFirst = 0, Normal = 1, StopLast = 2 };
75 std::function<
void()> forceExitHandler = kDEFAULT_FORCE_EXIT_HANDLER
97 template <std::invocable SomeCallback>
101 stopSignal_.connect(
static_cast<int>(priority), std::forward<SomeCallback>(callback));
104 static constexpr auto kHANDLED_SIGNALS = {SIGINT, SIGTERM};
119 setHandler(
void (*handler)(
int) =
nullptr);
121 static constexpr auto kDEFAULT_FORCE_EXIT_HANDLER = []() { std::exit(EXIT_FAILURE); };
Class handling signals.
Definition SignalsHandler.hpp:50
SignalsHandler(util::config::ClioConfigDefinition const &config, std::function< void()> forceExitHandler=kDEFAULT_FORCE_EXIT_HANDLER)
Create SignalsHandler object.
Definition SignalsHandler.cpp:71
Priority
Enum for stop priority.
Definition SignalsHandler.hpp:65
void subscribeToStop(SomeCallback &&callback, Priority priority=Priority::Normal)
Subscribe to stop signal.
Definition SignalsHandler.hpp:99
~SignalsHandler()
Destructor of SignalsHandler.
Definition SignalsHandler.cpp:103
All the config data will be stored and extracted from this class.
Definition ConfigDefinition.hpp:50
BasicExecutionContext< impl::AsioPoolContext, impl::BasicStopSource, impl::PostDispatchStrategy > PoolExecutionContext
A asio::thread_pool-based execution context.
Definition BasicExecutionContext.hpp:414
This namespace contains various utilities.
Definition AccountUtils.hpp:30