50 std::chrono::steady_clock::duration gracefulPeriod_;
52 std::optional<async::PoolExecutionContext::ScheduledOperation<void>> timer_;
54 boost::signals2::signal<void()> stopSignal_;
55 std::function<void(
int)> stopHandler_;
56 std::function<void(
int)> secondSignalHandler_;
58 friend class impl::SignalsHandlerStatic;
64 enum class Priority { StopFirst = 0, Normal = 1, StopLast = 2 };
74 std::function<
void()> forceExitHandler = kDEFAULT_FORCE_EXIT_HANDLER
96 template <std::invocable SomeCallback>
100 stopSignal_.connect(
static_cast<int>(priority), std::forward<SomeCallback>(callback));
103 static constexpr auto kHANDLED_SIGNALS = {SIGINT, SIGTERM};
118 setHandler(
void (*handler)(
int) =
nullptr);
120 static constexpr auto kDEFAULT_FORCE_EXIT_HANDLER = []() { std::exit(EXIT_FAILURE); };
SignalsHandler(util::config::ClioConfigDefinition const &config, std::function< void()> forceExitHandler=kDEFAULT_FORCE_EXIT_HANDLER)
Create SignalsHandler object.
Definition SignalsHandler.cpp:72
void subscribeToStop(SomeCallback &&callback, Priority priority=Priority::Normal)
Subscribe to stop signal.
Definition SignalsHandler.hpp:98
A highly configurable execution context.
Definition BasicExecutionContext.hpp:132