mirror of
https://github.com/XRPLF/clio.git
synced 2026-04-29 15:37:53 +00:00
@@ -25,7 +25,6 @@
|
||||
|
||||
#include <chrono>
|
||||
#include <csignal>
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
#include <optional>
|
||||
#include <utility>
|
||||
@@ -35,38 +34,38 @@ namespace util {
|
||||
namespace impl {
|
||||
|
||||
class SignalsHandlerStatic {
|
||||
static SignalsHandler* handler_;
|
||||
static SignalsHandler* installedHandler;
|
||||
|
||||
public:
|
||||
static void
|
||||
registerHandler(SignalsHandler& handler)
|
||||
{
|
||||
ASSERT(handler_ == nullptr, "There could be only one instance of SignalsHandler");
|
||||
handler_ = &handler;
|
||||
ASSERT(installedHandler == nullptr, "There could be only one instance of SignalsHandler");
|
||||
installedHandler = &handler;
|
||||
}
|
||||
|
||||
static void
|
||||
resetHandler()
|
||||
{
|
||||
handler_ = nullptr;
|
||||
installedHandler = nullptr;
|
||||
}
|
||||
|
||||
static void
|
||||
handleSignal(int signal)
|
||||
{
|
||||
ASSERT(handler_ != nullptr, "SignalsHandler is not initialized");
|
||||
handler_->stopHandler_(signal);
|
||||
ASSERT(installedHandler != nullptr, "SignalsHandler is not initialized");
|
||||
installedHandler->stopHandler_(signal);
|
||||
}
|
||||
|
||||
static void
|
||||
handleSecondSignal(int signal)
|
||||
{
|
||||
ASSERT(handler_ != nullptr, "SignalsHandler is not initialized");
|
||||
handler_->secondSignalHandler_(signal);
|
||||
ASSERT(installedHandler != nullptr, "SignalsHandler is not initialized");
|
||||
installedHandler->secondSignalHandler_(signal);
|
||||
}
|
||||
};
|
||||
|
||||
SignalsHandler* SignalsHandlerStatic::handler_ = nullptr;
|
||||
SignalsHandler* SignalsHandlerStatic::installedHandler = nullptr;
|
||||
|
||||
} // namespace impl
|
||||
|
||||
@@ -120,7 +119,7 @@ SignalsHandler::cancelTimer()
|
||||
void
|
||||
SignalsHandler::setHandler(void (*handler)(int))
|
||||
{
|
||||
for (int const signal : HANDLED_SIGNALS) {
|
||||
for (int const signal : kHANDLED_SIGNALS) {
|
||||
std::signal(signal, handler == nullptr ? SIG_DFL : handler);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user