MCPcopy Create free account
hub / github.com/ReversecLabs/C3 / HandleMessage

Method HandleMessage

Src/Core/GateRelay.cpp:487–531  ·  view source on GitHub ↗

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Source from the content-addressed store, hash-verified

485
486////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
487nlohmann::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////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
534void FSecure::C3::Core::GateRelay::CloseDevicesAndConnectors()

Callers 1

RunApiBrigeMethod · 0.95

Calls 7

LogFunction · 0.85
HandleActionsPacketMethod · 0.80
dumpMethod · 0.80
HandleNewBuildMessageMethod · 0.80
to_stringFunction · 0.50
valueMethod · 0.45
whatMethod · 0.45

Tested by

no test coverage detected