1 #pragma once 2 3 #include <functional> 4 #include <sdeventplus/source/base.hpp> 5 #include <sys/signalfd.h> 6 7 namespace sdeventplus 8 { 9 namespace source 10 { 11 12 class Signal : public Base 13 { 14 public: 15 using Callback = 16 std::function<void(Signal& source, const struct signalfd_siginfo* si)>; 17 18 Signal(const Event& event, int sig, Callback&& callback); 19 20 int get_signal() const; 21 22 private: 23 Callback callback; 24 25 const Callback& get_callback() const; 26 27 static sd_event_source* create_source(const Event& event, int sig); 28 29 static int signalCallback(sd_event_source* source, 30 const struct signalfd_siginfo* si, 31 void* userdata); 32 }; 33 34 } // namespace source 35 } // namespace sdeventplus 36