Commit 43863a70 authored by Max Kellermann's avatar Max Kellermann

SignalMonitor: add SignalMonitorGetEventLoop()

Eliminate the global variable "shutdown_loop".
parent bd5a70c7
......@@ -25,9 +25,7 @@
#include "Log.hxx"
#include "LogInit.hxx"
#include "Main.hxx"
#include "event/Loop.hxx"
#include "GlobalEvents.hxx"
#include "system/FatalError.hxx"
#include "util/Domain.hxx"
......@@ -35,12 +33,10 @@
static constexpr Domain signal_handlers_domain("signal_handlers");
static EventLoop *shutdown_loop;
static void
HandleShutdownSignal()
{
shutdown_loop->Break();
SignalMonitorGetEventLoop().Break();
}
static void
......@@ -72,7 +68,6 @@ SignalHandlersInit(EventLoop &loop)
sa.sa_handler = SIG_IGN;
x_sigaction(SIGPIPE, &sa);
shutdown_loop = &loop;
SignalMonitorRegister(SIGINT, HandleShutdownSignal);
SignalMonitorRegister(SIGTERM, HandleShutdownSignal);
......
......@@ -63,6 +63,8 @@ public:
SocketMonitor::Steal();
}
using SocketMonitor::GetEventLoop;
#ifdef USE_SIGNALFD
void Update(sigset_t &mask) {
const bool was_open = SocketMonitor::IsDefined();
......@@ -153,6 +155,12 @@ SignalMonitorFinish()
monitor.Destruct();
}
EventLoop &
SignalMonitorGetEventLoop()
{
return monitor->GetEventLoop();
}
void
SignalMonitorRegister(int signo, SignalHandler handler)
{
......
......@@ -41,6 +41,13 @@ void
SignalMonitorFinish();
/**
* Obtain a reference to the #EventLoop that was passed to
* SignalMonitorInit().
*/
EventLoop &
SignalMonitorGetEventLoop();
/**
* Register a handler for the specified signal. The handler will be
* invoked in a safe context.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment