Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
msg_handler.cc
1 #include "msg_handler.h"
2 
3 #include "logging/logging.h"
4 
5 void MsgDispatcher::clearHandlers() { handler_map_.clear(); }
6 
7 void MsgDispatcher::registerHandler(AKIpUptaneMes_PR msg_id, Handler handler) {
8  handler_map_[msg_id] = std::move(handler);
9 }
10 
11 MsgHandler::ReturnCode MsgDispatcher::handleMsg(const Asn1Message::Ptr& in_msg, Asn1Message::Ptr& out_msg) {
12  LOG_DEBUG << "Received a request from Primary: " << in_msg->toStr();
13 
14  auto find_res_it = handler_map_.find(in_msg->present());
15  if (find_res_it == handler_map_.end()) {
16  return MsgHandler::kUnkownMsg;
17  }
18  LOG_DEBUG << "Found a handler for the request, processing it...";
19  auto handle_status_code = find_res_it->second(*in_msg, *out_msg);
20  LOG_DEBUG << "Request handler returned a response: " << out_msg->toStr();
21 
22  return handle_status_code;
23 }