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