#pragma once #include #include #include #include #include "ServerState.hh" class SignalWatcher : public std::enable_shared_from_this { public: explicit SignalWatcher(std::shared_ptr state); SignalWatcher(const SignalWatcher&) = delete; SignalWatcher(SignalWatcher&&) = delete; SignalWatcher& operator=(const SignalWatcher&) = delete; SignalWatcher& operator=(SignalWatcher&&) = delete; ~SignalWatcher() = default; protected: phosg::PrefixedLogger log; std::shared_ptr state; std::unique_ptr sigusr1_event; std::unique_ptr sigusr2_event; static void dispatch_on_signal(evutil_socket_t, short, void* ctx); void on_signal(int signum); };