///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
| 485 | |
| 486 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| 487 | nlohmann::json FSecure::C3::Core::GateRelay::HandleMessage(nlohmann::json const& message) |
| 488 | { |
| 489 | auto messageType = message.at("MessageType").get<std::string>(); |
| 490 | auto sequenceNumber = message.value("SequenceNumber", 0ul); |
| 491 | auto const& messageData = message.at("MessageData"); |
| 492 | |
| 493 | json commandResponse; |
| 494 | std::optional<std::string> error; |
| 495 | try |
| 496 | { |
| 497 | if (messageType == "Action") |
| 498 | { |
| 499 | m_Profiler->HandleActionsPacket(ByteView{ messageData.dump() }); |
| 500 | return {}; |
| 501 | } |
| 502 | else if (messageType == "NewBuild") |
| 503 | { |
| 504 | commandResponse = m_Profiler->HandleNewBuildMessage(messageData); |
| 505 | } |
| 506 | else if (messageType == "Error") |
| 507 | { |
| 508 | Log({ "Controller error: " + messageData.at("Message").get<std::string>(), LogMessage::Severity::Error }); |
| 509 | } |
| 510 | } |
| 511 | catch (std::exception& e) |
| 512 | { |
| 513 | Log({"HandleMessage failed: Seq: "s + std::to_string(sequenceNumber) + ". Reason: " + e.what(), LogMessage::Severity::Warning}); |
| 514 | error = e.what(); |
| 515 | } |
| 516 | |
| 517 | if (sequenceNumber == 0) |
| 518 | return {}; |
| 519 | |
| 520 | json fullResponse |
| 521 | { |
| 522 | {"MessageType", messageType}, |
| 523 | {"SequenceNumber", sequenceNumber}, |
| 524 | {"MessageData", commandResponse }, |
| 525 | }; |
| 526 | |
| 527 | if (error) |
| 528 | fullResponse["Error"] = *error; |
| 529 | |
| 530 | return fullResponse; |
| 531 | } |
| 532 | |
| 533 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
| 534 | void FSecure::C3::Core::GateRelay::CloseDevicesAndConnectors() |
no test coverage detected