BioCMAMC-ST
signal_handling.hpp
1#ifndef __SIGNAL_HANDLING_HPP__
2#define __SIGNAL_HANDLING_HPP__
3
4#include <stdexcept>
5
6namespace Core
7{
8
19 {
20 public:
27 explicit SignalHandler();
28
40 [[nodiscard]] static inline bool is_usr1_raised() noexcept(false)
41 {
42 if (instance == nullptr)
43 {
44 throw std::runtime_error("SignalHandler not initialized before use");
45 }
46
47 const auto ret = instance->f_usr1_raised;
48 instance->f_usr1_raised = false;
49 return ret;
50 }
51
52 [[nodiscard]] static inline bool is_usr2_raised() noexcept(false)
53 {
54 if (instance == nullptr)
55 {
56 throw std::runtime_error("SignalHandler not initialized before use");
57 }
58
59 const auto ret = instance->f_usr2_raised;
60 instance->f_usr2_raised = false;
61 return ret;
62 }
63
64 [[nodiscard]] static inline bool is_sigint_raised() noexcept(false)
65 {
66 if (instance == nullptr)
67 {
68 throw std::runtime_error("SignalHandler not initialized before use");
69 }
70
71 const auto ret = instance->f_sigint_raised;
72 instance->f_sigint_raised = false;
73 return ret;
74 }
75
76 ~SignalHandler() = default;
77
78 private:
87 static void handle_SIGUSR1(int signal) noexcept;
88
97 static void handle_SIGUSR2(int signal) noexcept;
98
99 static void handle_SIGINT(int signal) noexcept;
100
105 static SignalHandler*
107 };
108
109} // namespace Core
110
111#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:106
static void handle_SIGINT(int signal) noexcept
Definition signal_handling.cpp:38
~SignalHandler()=default
bool f_usr2_raised
Definition signal_handling.hpp:104
static bool is_sigint_raised() noexcept(false)
Definition signal_handling.hpp:64
static void handle_SIGUSR2(int signal) noexcept
Handles the SIGUSR2 signal.
Definition signal_handling.cpp:30
bool f_sigint_raised
Definition signal_handling.hpp:101
static void handle_SIGUSR1(int signal) noexcept
Handles the SIGUSR1 signal.
Definition signal_handling.cpp:22
static bool is_usr1_raised() noexcept(false)
Checks if the SIGUSR1 signal has been raised.
Definition signal_handling.hpp:40
static bool is_usr2_raised() noexcept(false)
Definition signal_handling.hpp:52
bool f_usr1_raised
Definition signal_handling.hpp:102
Core component to perform simulation.
Definition data_exporter.hpp:19