Add function to send outbound SOL payload
Change-Id: I63213034110c0a550b43e1cbc0115b1312821e3d
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
diff --git a/message_handler.cpp b/message_handler.cpp
index 820895d..e8dbe7d 100644
--- a/message_handler.cpp
+++ b/message_handler.cpp
@@ -190,5 +190,22 @@
session->channelPtr = channel;
}
+void Handler::sendSOLPayload(const sol::Buffer& input)
+{
+ Message outMessage;
+
+ auto session = (std::get<session::Manager&>(singletonPool).getSession(
+ sessionID)).lock();
+
+ outMessage.payloadType = PayloadType::SOL;
+ outMessage.payload = input;
+ outMessage.isPacketEncrypted = session->isCryptAlgoEnabled();
+ outMessage.isPacketAuthenticated = session->isIntegrityAlgoEnabled();
+ outMessage.rcSessionID = session->getRCSessionID();
+ outMessage.bmcSessionID = sessionID;
+
+ send(outMessage);
+}
+
} //namespace message
diff --git a/message_handler.hpp b/message_handler.hpp
index 457af3e..60b7a6d 100644
--- a/message_handler.hpp
+++ b/message_handler.hpp
@@ -65,6 +65,14 @@
/** @brief Set socket channel in session object */
void setChannelInSession() const;
+ /** @brief Send the SOL payload
+ *
+ * The SOL payload is flattened and sent out on the socket
+ *
+ * @param[in] input - SOL Payload
+ */
+ void sendSOLPayload(const sol::Buffer& input);
+
// BMC Session ID for the Channel
session::SessionID sessionID;
diff --git a/sol/sol_context.cpp b/sol/sol_context.cpp
index ec48a59..c00d01c 100644
--- a/sol/sol_context.cpp
+++ b/sol/sol_context.cpp
@@ -198,7 +198,12 @@
void Context::sendPayload(const Buffer& out) const
{
+ auto session = (std::get<session::Manager&>(singletonPool).getSession(
+ sessionID)).lock();
+ message::Handler msgHandler(session->channelPtr, sessionID);
+
+ msgHandler.sendSOLPayload(out);
}
} // namespace sol