#ifndef MS_SIGNAL_HANDLE_HPP
#define MS_SIGNAL_HANDLE_HPP
#include <uv.h>
#include <string>
#include <vector>
class SignalHandle
{
public:
class Listener
{
public:
virtual ~Listener() = default;
public:
virtual void OnSignal(SignalHandle* signalsHandler, int signum) = 0;
};
public:
explicit SignalHandle(Listener* listener);
~SignalHandle();
public:
void AddSignal(int signum, const std::string& name);
private:
void InternalClose();
public:
void OnUvSignal(int signum);
private:
Listener* listener{ nullptr };
std::vector<uv_signal_t*> uvHandles;
bool closed{ false };
};
#endif