Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
msg_handler.h
1 #ifndef MSG_HANDLER_H
2 #define MSG_HANDLER_H
3 
4 #include <memory>
5 #include <unordered_map>
6 
7 #include "AKIpUptaneMes.h"
8 #include "asn1/asn1_message.h"
9 
10 class MsgHandler {
11  public:
12  enum ReturnCode { kUnkownMsg = -1, kOk, kRebootRequired };
13 
14  public:
15  MsgHandler() = default;
16  virtual ~MsgHandler() = default;
17  MsgHandler(const MsgHandler&) = delete;
18  MsgHandler(const MsgHandler&&) = delete;
19  MsgHandler& operator=(const MsgHandler&) = delete;
20  MsgHandler& operator=(const MsgHandler&&) = delete;
21 
22  public:
23  virtual ReturnCode handleMsg(const Asn1Message::Ptr& in_msg, Asn1Message::Ptr& out_msg) = 0;
24 };
25 
26 class MsgDispatcher : public MsgHandler {
27  public:
28  using Handler = std::function<ReturnCode(Asn1Message&, Asn1Message&)>;
29 
30  void registerHandler(AKIpUptaneMes_PR msg_id, Handler handler);
31  ReturnCode handleMsg(const Asn1Message::Ptr& in_msg, Asn1Message::Ptr& out_msg) override;
32 
33  protected:
34  void clearHandlers();
35 
36  unsigned int last_msg_ = 0;
37 
38  private:
39  std::unordered_map<unsigned int, Handler> handler_map_;
40 };
41 
42 #endif // MSG_HANDLER_H
MsgHandler
Definition: msg_handler.h:10
MsgDispatcher
Definition: msg_handler.h:26
Asn1Message
Reference counted holder for the top-level ASN1 message structure.
Definition: asn1_message.h:34