36 #ifndef SIGNAL_MONITOR_H 37 #define SIGNAL_MONITOR_H 42 #include "final/eventloop/monitor.h" 43 #include "final/eventloop/pipedata.h" 44 #include "final/util/fstring.h" 77 auto getClassName()
const ->
FString override;
81 void init (
int, handler_t, T&&);
82 void trigger (
short)
override;
89 static void onSignal (
int);
91 void handledAlarmSignal()
const;
92 void ensureSignalIsUnmonitored()
const;
94 void installSignalHandler();
95 void enterMonitorInstanceInTable();
100 int signal_number{-1};
101 PipeData signal_pipe{NO_FILE_DESCRIPTOR, NO_FILE_DESCRIPTOR};
102 std::unique_ptr<SigactionImpl> impl;
107 inline auto SignalMonitor::getClassName()
const ->
FString 108 {
return "SignalMonitor"; }
111 template <
typename T>
112 inline void SignalMonitor::init (
int sn, handler_t hdl, T&& uc)
114 if ( isInitialized() )
115 throw monitor_error{
"This instance has already been initialised."};
118 setHandler (std::move(hdl));
119 setUserContext (std::forward<T>(uc));
125 #endif // SIGNAL_MONITOR_H Definition: signal_monitor.h:53
Definition: eventloop.h:48
Definition: class_template.cpp:25
Definition: signal_monitor.cpp:66
Definition: pipedata.h:47