EuvSignal.hpp
1 //
2 // Created by xiong on 2024/1/17.
3 //
4 
5 #ifndef EMX_EUVSIGNAL_HPP
6 #define EMX_EUVSIGNAL_HPP
7 
8 #include "EuvLoop.hpp"
9 
10 namespace Emx {
16  class EuvSignal {
17  public:
19  using Callback = std::function<void(int signum)>;
20 
21  EuvSignal() : m_signal(nullptr) {}
22 
23  virtual ~EuvSignal() { Destroy(); }
24 
32 
34  void Destroy();
39  void Start(int signum);
40 
44  void Stop() {
45  if (m_signal) uv_signal_stop(m_signal);
46  }
47 
48  private:
49  static void OnDestroy(uv_handle_t *handle);
50 
51  private:
52  uv_signal_t *m_signal;
53  Callback m_cb;
54  };
56 }// namespace Emx
57 #endif//EMX_EUVSIGNAL_HPP
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
实现基于Loop的异步事件通知
Definition: EuvSignal.hpp:16
ErrCodeE Create(EuvLoop &loop, Callback cb)
创建信号监听
void Stop()
停止监听
Definition: EuvSignal.hpp:44
virtual ~EuvSignal()
Definition: EuvSignal.hpp:23
void Destroy()
销毁异步通知
void Start(int signum)
开始监听
EuvSignal()
Definition: EuvSignal.hpp:21
std::function< void(int signum)> Callback
事件到达时触发的回调函数
Definition: EuvSignal.hpp:19
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10