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, ... )
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
}
{
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 ))
}
/// 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 ||
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;
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 );
}