SignalMonitor: add SignalMonitorGetEventLoop()
Eliminate the global variable "shutdown_loop".
This commit is contained in:
parent
bd5a70c712
commit
43863a70c8
@ -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)
|
||||
{
|
||||
|
@ -40,6 +40,13 @@ SignalMonitorInit(EventLoop &loop);
|
||||
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.
|
||||
|
Loading…
Reference in New Issue
Block a user