EuvAsync.hpp
1 //
2 // Created by xiong on 2020/10/23.
3 //
4 
5 #ifndef EMX_EUVASYNC_HPP
6 #define EMX_EUVASYNC_HPP
7 
8 #include <mutex>
9 #include "EuvLoop.hpp"
10 
11 namespace Emx {
17  class EuvAsync {
18  public:
19 
21  using Callback = std::function<void()>;
22 
23  EuvAsync() : m_async(nullptr) {}
24 
25  virtual ~EuvAsync() {
26  Destroy();
27  }
28 
36 
38  void Destroy();
39 
46 
47  private:
48  static void OnDestroy(uv_handle_t *handle);
49 
50  private:
51  uv_async_t *m_async;
52  std::mutex m_mutex;
53  Callback m_cb;
54  };
56 }
57 
58 
59 #endif //EMX_EUVASYNC_HPP
实现基于Loop的异步事件通知
Definition: EuvAsync.hpp:17
EuvAsync()
Definition: EuvAsync.hpp:23
ErrCodeE Create(EuvLoop &loop, Callback cb)
创建异步通知
virtual ~EuvAsync()
Definition: EuvAsync.hpp:25
std::function< void()> Callback
事件到达时触发的回调函数
Definition: EuvAsync.hpp:21
ErrCodeE Send()
触发一次异步通知,当事件回调函数执行完毕之前,多次的触发会被合并为一次, 此函数可以在Loop之外执行
void Destroy()
销毁异步通知
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10