Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarSignalHandler.hpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/core/StarSignalHandler.hpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/core/StarSignalHandler.hpp')
-rw-r--r--source/core/StarSignalHandler.hpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/source/core/StarSignalHandler.hpp b/source/core/StarSignalHandler.hpp
new file mode 100644
index 0000000..0b70d71
--- /dev/null
+++ b/source/core/StarSignalHandler.hpp
@@ -0,0 +1,37 @@
+#ifndef STAR_SIGNAL_HANDLER_HPP
+#define STAR_SIGNAL_HANDLER_HPP
+
+#include "StarException.hpp"
+
+namespace Star {
+
+STAR_STRUCT(SignalHandlerImpl);
+
+// Singleton signal handler that registers handlers for segfault, fpe,
+// illegal instructions etc as well as non-fatal interrupts.
+class SignalHandler {
+public:
+ SignalHandler();
+ ~SignalHandler();
+
+ // If enabled, will catch segfault, fpe, and illegal instructions and output
+ // error information before dying.
+ void setHandleFatal(bool handleFatal);
+ bool handlingFatal() const;
+
+ // If enabled, non-fatal interrupt signal will be caught and will not kill
+ // the process and will instead set the interrupted flag.
+ void setHandleInterrupt(bool handleInterrupt);
+ bool handlingInterrupt() const;
+
+ bool interruptCaught() const;
+
+private:
+ friend SignalHandlerImpl;
+
+ static SignalHandlerImplUPtr s_singleton;
+};
+
+}
+
+#endif