summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Joseph <tomjoseph@in.ibm.com>2017-03-14 18:10:52 +0530
committerPatrick Williams <patrick@stwcx.xyz>2017-04-24 11:22:15 -0500
commit4ff14b59a16a2ecd99c77236db0b47c60c5a1a05 (patch)
tree9620726976805ab20dc3afca4f8796bc72a12360
parent2e44e0efa28b6abd386ab2a504c18e959ef46937 (diff)
downloadphosphor-net-ipmid-4ff14b59a16a2ecd99c77236db0b47c60c5a1a05.tar.gz
phosphor-net-ipmid-4ff14b59a16a2ecd99c77236db0b47c60c5a1a05.zip
Implement API to stop a payload instance
Change-Id: I8cf7a85f651e5a4377f8e64cbb32932f452a234e Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
-rw-r--r--sol/sol_manager.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/sol/sol_manager.cpp b/sol/sol_manager.cpp
index ed47398..ce0e5a4 100644
--- a/sol/sol_manager.cpp
+++ b/sol/sol_manager.cpp
@@ -112,4 +112,25 @@ void Manager::startPayloadInstance(uint8_t payloadInstance,
payloadMap.emplace(payloadInstance, std::move(context));
}
+void Manager::stopPayloadInstance(uint8_t payloadInstance)
+{
+ auto iter = payloadMap.find(payloadInstance);
+ if (iter == payloadMap.end())
+ {
+ throw std::runtime_error("SOL Payload instance not found ");
+ }
+
+ payloadMap.erase(iter);
+
+ std::get<eventloop::EventLoop&>(singletonPool).stopSOLPayloadInstance(
+ payloadInstance);
+
+ if (payloadMap.empty())
+ {
+ // Remove the host console decriptor from the sd_event_loop
+ std::get<eventloop::EventLoop&>(singletonPool).stopHostConsole();
+ consoleFD.reset();
+ }
+}
+
} // namespace sol
OpenPOWER on IntegriCloud