BioCMAMC-ST
signal_handling.hpp
1#ifndef __SIGNAL_HANDLING_HPP__
2#define __SIGNAL_HANDLING_HPP__
3
4#include <stdexcept>
5
6namespace Core
7{
8
18 class SignalHandler final
19 {
20 public:
27 explicit SignalHandler();
28
42 [[nodiscard]] static inline bool
43 is_usr1_raised() noexcept(false)
44 {
45 if (instance == nullptr)
46 {
47 throw std::runtime_error("SignalHandler not initialized before use");
48 }
49
50 const auto ret = instance->f_usr1_raised;
51 instance->f_usr1_raised = false;
52 return ret;
53 }
54
55 [[nodiscard]] static inline bool
56 is_usr2_raised() noexcept(false)
57 {
58 if (instance == nullptr)
59 {
60 throw std::runtime_error("SignalHandler not initialized before use");
61 }
62
63 const auto ret = instance->f_usr2_raised;
64 instance->f_usr2_raised = false;
65 return ret;
66 }
67
68 [[nodiscard]] static inline bool
69 is_sigint_raised() noexcept(false)
70 {
71 if (instance == nullptr)
72 {
73 throw std::runtime_error("SignalHandler not initialized before use");
74 }
75
76 const auto ret = instance->f_sigint_raised;
77 instance->f_sigint_raised = false;
78 return ret;
79 }
80
81 ~SignalHandler() = default;
82
83 private:
92 static void handle_SIGUSR1(int signal) noexcept;
93
102 static void handle_SIGUSR2(int signal) noexcept;
103
104 static void handle_SIGINT(int signal) noexcept;
105
110 static SignalHandler*
112 };
113
114} // namespace Core
115
116#endif //__SIGNAL_HANDLING_HPP__
SignalHandler()
Constructor for SignalHandler.
Definition signal_handling.cpp:9
static SignalHandler * instance
Singleton instance of the SignalHandler.
Definition signal_handling.hpp:111
static void handle_SIGINT(int signal) noexcept
Definition signal_handling.cpp:43
~SignalHandler()=default
bool f_usr2_raised
Definition signal_handling.hpp:109
static bool is_sigint_raised() noexcept(false)
Definition signal_handling.hpp:69
static void handle_SIGUSR2(int signal) noexcept
Handles the SIGUSR2 signal.
Definition signal_handling.cpp:34
bool f_sigint_raised
Definition signal_handling.hpp:106
static void handle_SIGUSR1(int signal) noexcept
Handles the SIGUSR1 signal.
Definition signal_handling.cpp:25
static bool is_usr1_raised() noexcept(false)
Checks if the SIGUSR1 signal has been raised.
Definition signal_handling.hpp:43
static bool is_usr2_raised() noexcept(false)
Definition signal_handling.hpp:56
bool f_usr1_raised
Definition signal_handling.hpp:107
Core component to perform simulation.
Definition data_exporter.hpp:19