add signal handlers; closes #564

This commit is contained in:
Martin Michelsen
2024-10-21 22:38:58 -07:00
parent 086b2d411a
commit a9a15600b2
6 changed files with 114 additions and 1 deletions
+28
View File
@@ -0,0 +1,28 @@
#pragma once
#include <memory>
#include <string>
#include <thread>
#include <event2/event.h>
#include "ServerState.hh"
class SignalWatcher : public std::enable_shared_from_this<SignalWatcher> {
public:
explicit SignalWatcher(std::shared_ptr<ServerState> 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<ServerState> state;
std::unique_ptr<struct event, void (*)(struct event*)> sigusr1_event;
std::unique_ptr<struct event, void (*)(struct event*)> sigusr2_event;
static void dispatch_on_signal(evutil_socket_t, short, void* ctx);
void on_signal(int signum);
};