#include #include "main.hpp" #include "sol/sol_context.hpp" #include "sol/sol_manager.hpp" #include "sol_cmds.hpp" namespace sol { namespace command { using namespace phosphor::logging; std::vector payloadHandler(std::vector& inPayload, const message::Handler& handler) { auto request = reinterpret_cast(inPayload.data()); auto solDataSize = inPayload.size() - sizeof(Payload); Buffer charData(solDataSize); if( solDataSize > 0) { std::copy_n(inPayload.data() + sizeof(Payload), solDataSize, charData.begin()); } try { auto& context = std::get(singletonPool). getContext(handler.sessionID); context.processInboundPayload(request->packetSeqNum, request->packetAckSeqNum, request->acceptedCharCount, request->inOperation.ack, charData); } catch (std::exception& e) { log(e.what()); 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 = (std::get(singletonPool).getSession( sessionID)).lock(); message::Handler msgHandler(session->channelPtr, sessionID); msgHandler.sendUnsolicitedIPMIPayload(netfnTransport, solActivatingCmd, outPayload); } } // namespace command } // namespace sol