event/SignalMonitor: use BoundMethod instead of raw function pointer

This commit is contained in:
Max Kellermann
2016-06-20 10:25:28 +02:00
parent c3d9c32615
commit 4280f84535
4 changed files with 18 additions and 14 deletions

View File

@@ -158,7 +158,7 @@ SignalMonitorFinish()
sa.sa_handler = SIG_DFL;
for (unsigned i = 0; i < MAX_SIGNAL; ++i) {
if (signal_handlers[i] != nullptr) {
if (signal_handlers[i]) {
x_sigaction(i, sa);
signal_handlers[i] = nullptr;
}
@@ -179,7 +179,7 @@ SignalMonitorGetEventLoop()
void
SignalMonitorRegister(int signo, SignalHandler handler)
{
assert(signal_handlers[signo] == nullptr);
assert(!signal_handlers[signo]);
#ifndef USE_SIGNALFD
assert(!signal_pending[signo]);
#endif
@@ -209,7 +209,7 @@ SignalMonitor::OnSocketReady(unsigned)
int signo;
while ((signo = fd.Read()) >= 0) {
assert(unsigned(signo) < MAX_SIGNAL);
assert(signal_handlers[signo] != nullptr);
assert(signal_handlers[signo]);
signal_handlers[signo]();
}

View File

@@ -26,7 +26,9 @@ class EventLoop;
#ifndef WIN32
typedef void (*SignalHandler)();
#include "util/BindMethod.hxx"
typedef BoundMethod<void()> SignalHandler;
/**
* Initialise the signal monitor subsystem.