From 930128a7ea11f7012131c4801b86b9b98a7aa9fb Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 6 Aug 2013 21:31:59 +0200 Subject: SignalHandlers: move code to new class SignalMonitor --- src/SignalHandlers.cxx | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'src/SignalHandlers.cxx') diff --git a/src/SignalHandlers.cxx b/src/SignalHandlers.cxx index ef6be448b..9d43dbee1 100644 --- a/src/SignalHandlers.cxx +++ b/src/SignalHandlers.cxx @@ -19,6 +19,7 @@ #include "config.h" #include "SignalHandlers.hxx" +#include "event/SignalMonitor.hxx" #ifndef WIN32 @@ -32,14 +33,12 @@ #include -static void exit_signal_handler(gcc_unused int signum) -{ - GlobalEvents::Emit(GlobalEvents::SHUTDOWN); -} +static EventLoop *shutdown_loop; -static void reload_signal_handler(gcc_unused int signum) +static void +HandleShutdownSignal() { - GlobalEvents::Emit(GlobalEvents::RELOAD); + shutdown_loop->Break(); } static void @@ -58,8 +57,11 @@ handle_reload_event(void) #endif -void initSigHandlers(void) +void +SignalHandlersInit(EventLoop &loop) { + SignalMonitorInit(loop); + #ifndef WIN32 struct sigaction sa; @@ -68,12 +70,16 @@ void initSigHandlers(void) sa.sa_handler = SIG_IGN; x_sigaction(SIGPIPE, &sa); - sa.sa_handler = exit_signal_handler; - x_sigaction(SIGINT, &sa); - x_sigaction(SIGTERM, &sa); + shutdown_loop = &loop; + SignalMonitorRegister(SIGINT, HandleShutdownSignal); + SignalMonitorRegister(SIGTERM, HandleShutdownSignal); - GlobalEvents::Register(GlobalEvents::RELOAD, handle_reload_event); - sa.sa_handler = reload_signal_handler; - x_sigaction(SIGHUP, &sa); + SignalMonitorRegister(SIGHUP, handle_reload_event); #endif } + +void +SignalHandlersFinish() +{ + SignalMonitorFinish(); +} -- cgit v1.2.3