1 #ifndef SIGNAL_HANDLER_HH_
2 #define SIGNAL_HANDLER_HH_
9 #include <condition_variable>
14 #include "Mu2e-STMDAQ/utils/stop_signal.hh"
17 #include "Mu2e-STMDAQ/utils/async_logger.hh"
25 const std::shared_ptr<AsyncLogger> logger;
28 static std::shared_ptr<cpu_utils> cpu;
31 static std::atomic<bool> exit_requested;
34 static std::mutex confirm_mutex;
37 static std::condition_variable confirm_cv;
40 static std::thread signal_thread;
43 static void handleSignal(
int signal);
46 static void listenForSignals();
54 explicit SignalHandler(
const std::shared_ptr<AsyncLogger>& logger_,
55 const std::shared_ptr<cpu_utils>& cpu_);
60 stop::trigger_user_stop();
62 if (signal_thread.joinable()) signal_thread.join();
66 std::cout <<
"SignalHandler destructor called.\n";