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