EuvTimer.hpp
1 //
2 // Created by xiong on 2020/10/23.
3 //
4 
5 #ifndef EMX_EUVTIMER_HPP
6 #define EMX_EUVTIMER_HPP
7 
8 #include "EuvLoop.hpp"
9 
10 namespace Emx {
16  class EuvTimer {
17  public:
19  using Callback = std::function<void()>;
20 
21  EuvTimer() : m_timer(nullptr), m_uvLoop(nullptr) {}
22 
23  virtual ~EuvTimer() { Destroy(); }
24 
31 
33  void Destroy();
34 
42  ErrCodeE Start(uint64_t timeout, uint64_t repeat, Callback cb);
43 
45  void Stop() {
46  if (m_timer) uv_timer_stop(m_timer);
47  }
48 
49  // void Again() { uv_timer_again(m_timer); }
50  //
51  // void SetRepeat(uint64_t repeat) { uv_timer_set_repeat(m_timer, repeat); }
52  //
53  // uint64_t GetRepeat() { return uv_timer_get_repeat(m_timer); }
54  //
55  // uint64_t GetTimeout() { return m_timer->timeout; }
56  //
57  // uint64_t GetStartId() { return m_timer->start_id; }
58  //
59  // uint64_t GetLoopTime() { return m_timer->loop->time; }
60 
61  private:
62  static void OnDestroy(uv_handle_t *handle);
63 
64  private:
65  uv_timer_t *m_timer;
66  uv_loop_t *m_uvLoop;
67  Callback m_cb;
68  };
70 }// namespace Emx
71 
72 
73 #endif//EMX_EUVTIMER_HPP
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
基于EuvLoop的定时器,很有用的一个东西
Definition: EuvTimer.hpp:16
std::function< void()> Callback
超时回调
Definition: EuvTimer.hpp:19
ErrCodeE Start(uint64_t timeout, uint64_t repeat, Callback cb)
启动定时器,超时后会触发回调
void Stop()
停止定时器
Definition: EuvTimer.hpp:45
ErrCodeE Create(EuvLoop &loop)
创建定时器,并绑定loop
void Destroy()
销毁定时器
virtual ~EuvTimer()
Definition: EuvTimer.hpp:23
EuvTimer()
Definition: EuvTimer.hpp:21
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10