#include "sol_cmds.hpp" #include "sessions_manager.hpp" #include "sol/sol_context.hpp" #include "sol/sol_manager.hpp" #include namespace sol { namespace command { using namespace phosphor::logging; std::vector payloadHandler(const std::vector& inPayload, std::shared_ptr& handler) { // Check inPayload size is at least Payload if (inPayload.size() < sizeof(Payload)) { return std::vector(); } auto request = reinterpret_cast(inPayload.data()); auto solDataSize = inPayload.size() - sizeof(Payload); std::vector charData(solDataSize); if (solDataSize > 0) { std::copy_n(inPayload.data() + sizeof(Payload), solDataSize, charData.begin()); } try { auto& context = sol::Manager::get().getContext(handler->sessionID); context.processInboundPayload( request->packetSeqNum, request->packetAckSeqNum, request->acceptedCharCount, request->inOperation.ack, request->inOperation.generateBreak, charData); } catch (const std::exception& e) { lg2::error("Failed to call the getContext method: {ERROR}", "ERROR", e); return std::vector(); } return std::vector(); } void activating(uint8_t payloadInstance, uint32_t sessionID) { std::vector outPayload(sizeof(ActivatingRequest)); auto request = reinterpret_cast(outPayload.data()); request->sessionState = 0; request->payloadInstance = payloadInstance; request->majorVersion = MAJOR_VERSION; request->minorVersion = MINOR_VERSION; auto session = session::Manager::get().getSession(sessionID); message::Handler msgHandler(session->channelPtr, sessionID); msgHandler.sendUnsolicitedIPMIPayload(netfnTransport, solActivatingCmd, outPayload); } } // namespace command } // namespace sol