#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; asio::signal_set signals; asio::awaitable signal_handler_task(); };