removed logging from signal handler; create one handler per signal type
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 22 Jan 2015 14:09:46 +0000 (15:09 +0100)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 22 Jan 2015 14:09:46 +0000 (15:09 +0100)
src/main.cpp

index f331d94..ad5b6cf 100644 (file)
@@ -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 );
     }