// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "MessageHandler.hpp" #include #include #include namespace sdesktop::endpoints { MessageHandler::MessageHandler(sys::Service *OwnerService, std::function messageProcessedCallback, std::unique_ptr endpointFactory) : messageProcessedCallback(std::move(messageProcessedCallback)), OwnerServicePtr(OwnerService), endpointFactory(std::move(endpointFactory)) {} void MessageHandler::parseMessage(const std::string &msg) { try { messageJson = json11::Json::parse(msg, JsonErrorMsg); } catch (const std::exception &e) { LOG_ERROR("Cannot create MessageHandler! err:%s", e.what()); } } void MessageHandler::processMessage() { auto context = ContextFactory::create(messageJson); LOG_DEBUG("[MsgHandler]\nmethod: %s\nendpoint: %s\nuuid: %d", magic_enum::enum_name(context->getMethod()).data(), magic_enum::enum_name(context->getEndpoint()).data(), context->getUuid()); auto handler = endpointFactory->create(*context, OwnerServicePtr); if (handler == nullptr) { LOG_ERROR("No way to handle!"); return; } handler->handle(*context); messageProcessedCallback(); } } // namespace sdesktop::endpoints