1*64b3dec8STom Joseph #include <phosphor-logging/log.hpp> 2*64b3dec8STom Joseph #include "main.hpp" 3*64b3dec8STom Joseph #include "sol/sol_context.hpp" 4*64b3dec8STom Joseph #include "sol/sol_manager.hpp" 5*64b3dec8STom Joseph #include "sol_cmds.hpp" 6*64b3dec8STom Joseph 7*64b3dec8STom Joseph namespace sol 8*64b3dec8STom Joseph { 9*64b3dec8STom Joseph 10*64b3dec8STom Joseph namespace command 11*64b3dec8STom Joseph { 12*64b3dec8STom Joseph 13*64b3dec8STom Joseph using namespace phosphor::logging; 14*64b3dec8STom Joseph 15*64b3dec8STom Joseph std::vector<uint8_t> payloadHandler(std::vector<uint8_t>& inPayload, 16*64b3dec8STom Joseph const message::Handler& handler) 17*64b3dec8STom Joseph { 18*64b3dec8STom Joseph auto request = reinterpret_cast<Payload*>(inPayload.data()); 19*64b3dec8STom Joseph 20*64b3dec8STom Joseph auto solDataSize = inPayload.size() - sizeof(Payload); 21*64b3dec8STom Joseph 22*64b3dec8STom Joseph Buffer charData(solDataSize); 23*64b3dec8STom Joseph if( solDataSize > 0) 24*64b3dec8STom Joseph { 25*64b3dec8STom Joseph std::copy_n(inPayload.data() + sizeof(Payload), 26*64b3dec8STom Joseph solDataSize, 27*64b3dec8STom Joseph charData.begin()); 28*64b3dec8STom Joseph } 29*64b3dec8STom Joseph 30*64b3dec8STom Joseph try 31*64b3dec8STom Joseph { 32*64b3dec8STom Joseph auto& context = std::get<sol::Manager&>(singletonPool). 33*64b3dec8STom Joseph getContext(handler.sessionID); 34*64b3dec8STom Joseph 35*64b3dec8STom Joseph context.processInboundPayload(request->packetSeqNum, 36*64b3dec8STom Joseph request->packetAckSeqNum, 37*64b3dec8STom Joseph request->acceptedCharCount, 38*64b3dec8STom Joseph request->inOperation.ack, 39*64b3dec8STom Joseph charData); 40*64b3dec8STom Joseph } 41*64b3dec8STom Joseph catch (std::exception& e) 42*64b3dec8STom Joseph { 43*64b3dec8STom Joseph log<level::ERR>(e.what()); 44*64b3dec8STom Joseph return std::vector<uint8_t>(); 45*64b3dec8STom Joseph } 46*64b3dec8STom Joseph 47*64b3dec8STom Joseph return std::vector<uint8_t>(); 48*64b3dec8STom Joseph } 49*64b3dec8STom Joseph 50*64b3dec8STom Joseph } // namespace command 51*64b3dec8STom Joseph 52*64b3dec8STom Joseph } // namespace sol 53