From 666388baac19a28404e0a248495036fc4d85d3e4 Mon Sep 17 00:00:00 2001 From: Christian Herdtweck Date: Thu, 22 Jan 2015 15:09:46 +0100 Subject: [PATCH] removed logging from signal handler; create one handler per signal type --- src/main.cpp | 53 +++++++++++++++++++++++++++++------------------------ 1 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f331d94..ad5b6cf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -71,9 +71,12 @@ void init_pingers(const IoServiceItem, const ConfigurationItem&, void start_pingers(const PingSchedulerList&); void stop_pingers(const PingSchedulerList&); -void signal_handler(int param); +void signal_handler_int(int param); +void signal_handler_term(int param); +void signal_handler_usr1(int param); +void signal_handler_usr2(int param); void signal_checker( const boost::system::error_code &error ); -void install_signal_handler( const IoServiceItem io_service, const int config_log_level ); +void install_signal_handlers( const IoServiceItem io_service, const int config_log_level ); void reset_signal_handlers(); // data required for signal handling (SIGINT, SIGTERM, ... ) @@ -304,20 +307,22 @@ void stop_pingers( signal_data_struct signal_data; -/// registered as signal handler; mainly sets signal_data.signaled_flag -void signal_handler(int param) +/// registered as signal handler; just sets signal_data.signaled_flag +void signal_handler_int(int param) { - if (param == SIGUSR1) - GlobalLogger.info() << "signal handler called with SIGUSR1." << endl; - else if (param == SIGUSR2) - GlobalLogger.info() << "signal handler called with SIGUSR2." << endl; - else if (param == SIGTERM) - GlobalLogger.info() << "signal handler called with SIGTERM." << endl; - else if (param == SIGINT) - GlobalLogger.info() << "signal handler called with SIGINT." << endl; - else - GlobalLogger.warning() << "signal handler called with unexpected signal " << param << endl; - signal_data.signaled_flag = param; + signal_data.signaled_flag = param; // SIGINT +} +void signal_handler_term(int param) +{ + signal_data.signaled_flag = param; // SIGTERM +} +void signal_handler_usr1(int param) +{ + signal_data.signaled_flag = param; // SIGUSR1 +} +void signal_handler_usr2(int param) +{ + signal_data.signaled_flag = param; // SIGUSR2 } @@ -351,13 +356,13 @@ void signal_checker( const boost::system::error_code &error ) { int new_log_level = I2n::Logger::get_log_level()+1; I2n::Logger::set_log_level( new_log_level ); - GlobalLogger.info() << "Increased log level to " + GlobalLogger.info() << "Received SIGUSR1 -- increased log level to " << I2n::Logger::get_log_level_string(); } else if ( signaled_flag == SIGUSR2 ) { I2n::Logger::set_log_level( signal_data.config_log_level ); - GlobalLogger.info() << "Reset log level to normal (" + GlobalLogger.info() << "Received SIGUSR2 -- reset log level to normal (" << I2n::Logger::get_log_level_string() << ")"; } else if ( ( signaled_flag == SIGTERM ) || ( signaled_flag == SIGINT )) @@ -387,16 +392,16 @@ void signal_checker( const boost::system::error_code &error ) } /// register own signal handlers; see reset_signal_handlers for undo -void install_signal_handler( const IoServiceItem io_service, const int config_log_level ) +void install_signal_handlers( const IoServiceItem io_service, const int config_log_level ) { signal_data.signaled_flag = 0; signal_data.config_log_level = config_log_level; // install own signal handlers - signal_data.old_handler_int = signal(SIGINT, signal_handler); - signal_data.old_handler_term = signal(SIGTERM, signal_handler); - signal_data.old_handler_usr1 = signal(SIGUSR1, signal_handler); - signal_data.old_handler_usr2 = signal(SIGUSR2, signal_handler); + signal_data.old_handler_int = signal(SIGINT, signal_handler_int); + signal_data.old_handler_term = signal(SIGTERM, signal_handler_term); + signal_data.old_handler_usr1 = signal(SIGUSR1, signal_handler_usr1); + signal_data.old_handler_usr2 = signal(SIGUSR2, signal_handler_usr2); if ( signal_data.old_handler_int == SIG_ERR || signal_data.old_handler_term == SIG_ERR || signal_data.old_handler_usr1 == SIG_ERR || @@ -416,7 +421,7 @@ void install_signal_handler( const IoServiceItem io_service, const int config_lo GlobalLogger.debug() << "signal timer set" << endl; } -/// reset handlers to the ones saved in install_signal_handler +/// reset handlers to the ones saved in install_signal_handlers void reset_signal_handlers() { void (*old_handler_int)(int) = 0; @@ -491,7 +496,7 @@ int main( int argc, const char *argv[] ) init_pingers( io_service, configuration, status_notifier, &scheduler_list ); - install_signal_handler( io_service, log_level ); + install_signal_handlers( io_service, log_level ); start_pingers( scheduler_list ); } -- 1.7.1