blob: 344b6d8b093a3113a134168fa83e14ae62583af4 [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
Tom Joseph18a45e92017-04-11 11:30:44 +053015std::vector<uint8_t> payloadHandler(const std::vector<uint8_t>& inPayload,
Tom Joseph64b3dec2017-04-03 01:53:44 +053016 const message::Handler& handler)
17{
Tom Joseph18a45e92017-04-11 11:30:44 +053018 auto request = reinterpret_cast<const Payload*>(inPayload.data());
Tom Joseph64b3dec2017-04-03 01:53:44 +053019 auto solDataSize = inPayload.size() - sizeof(Payload);
20
21 Buffer charData(solDataSize);
22 if( solDataSize > 0)
23 {
24 std::copy_n(inPayload.data() + sizeof(Payload),
25 solDataSize,
26 charData.begin());
27 }
28
29 try
30 {
31 auto& context = std::get<sol::Manager&>(singletonPool).
32 getContext(handler.sessionID);
33
34 context.processInboundPayload(request->packetSeqNum,
35 request->packetAckSeqNum,
36 request->acceptedCharCount,
37 request->inOperation.ack,
38 charData);
39 }
40 catch (std::exception& e)
41 {
42 log<level::ERR>(e.what());
43 return std::vector<uint8_t>();
44 }
45
46 return std::vector<uint8_t>();
47}
48
Tom Josephe14ac962017-04-03 01:56:04 +053049void activating(uint8_t payloadInstance, uint32_t sessionID)
50{
51 std::vector<uint8_t> outPayload(sizeof(ActivatingRequest));
52
53 auto request = reinterpret_cast<ActivatingRequest*>
54 (outPayload.data());
55
56 request->sessionState = 0;
57 request->payloadInstance = payloadInstance;
58 request->majorVersion = MAJOR_VERSION;
59 request->minorVersion = MINOR_VERSION;
60
61 auto session = (std::get<session::Manager&>(singletonPool).getSession(
62 sessionID)).lock();
63
64 message::Handler msgHandler(session->channelPtr, sessionID);
65
66 msgHandler.sendUnsolicitedIPMIPayload(netfnTransport,
67 solActivatingCmd,
68 outPayload);
69}
70
Tom Joseph64b3dec2017-04-03 01:53:44 +053071} // namespace command
72
73} // namespace sol