UpdateClient.hpp
1 /*
2  * @Author: xiong
3  * @Date: 2022/9/6
4 */
5 
6 #ifndef EMX_UpdateClient_HPP
7 #define EMX_UpdateClient_HPP
8 
9 #include "EmxCore.hpp"
10 
11 namespace Emx {
15  class UpdateClient {
16  public:
18  m_created = false;
19  m_buffer = nullptr;
20  }
21 
22  ErrCodeE Create(uint32_t session);
23 
24  ErrCodeE Push(const uint8_t *data, int32_t size);
25 
26  void Destroy();
27 
28  private:
29  bool m_created;
30  uint8_t *m_buffer;
31  uint32_t m_session;
32  uint32_t m_seq;
33  SocketUnDgram m_sock;
34  sockaddr_un m_addr;
35  };
36 
37  class UpdateEvent {
38  public:
39  enum class StatE : uint8_t {
40  Idle = 0,
41  Start,
42  Done,
43  Error,
44  };
45 
46  struct Event {
48  uint32_t session;
49  struct Size {
50  int32_t total;
51  int32_t current;
53  };
54  using EventCallBack = std::function<void(Event &e)>;
55 
56  ErrCodeE Create(EuvLoop *loop, char *buffer, int size, EventCallBack cb);
57 
58  void Destroy();
59 
60  private:
61  void OnMsgRecv(uint32_t topic, const char *data, int32_t size);
62 
63  private:
65  EventCallBack m_cb;
66  };
68 };
69 
70 #endif //EMX_UpdateClient_HPP
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
用于Topic的异步订阅
Definition: MsgTopic.hpp:175
面相数据包的AF_UNIX操作接口
Definition: Socket.hpp:99
Definition: UpdateClient.hpp:15
UpdateClient()
Definition: UpdateClient.hpp:17
ErrCodeE Push(const uint8_t *data, int32_t size)
ErrCodeE Create(uint32_t session)
Definition: UpdateClient.hpp:37
StatE
Definition: UpdateClient.hpp:39
ErrCodeE Create(EuvLoop *loop, char *buffer, int size, EventCallBack cb)
std::function< void(Event &e)> EventCallBack
Definition: UpdateClient.hpp:54
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10
Definition: UpdateClient.hpp:49
int32_t current
Definition: UpdateClient.hpp:51
int32_t total
Definition: UpdateClient.hpp:50
Definition: UpdateClient.hpp:46
struct Emx::UpdateEvent::Event::Size burn
uint32_t session
Definition: UpdateClient.hpp:48
StatE stat
Definition: UpdateClient.hpp:47
struct Emx::UpdateEvent::Event::Size download