diff options
author | Tom Joseph <tomjoseph@in.ibm.com> | 2017-03-14 18:10:52 +0530 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-04-24 11:22:15 -0500 |
commit | 4ff14b59a16a2ecd99c77236db0b47c60c5a1a05 (patch) | |
tree | 9620726976805ab20dc3afca4f8796bc72a12360 | |
parent | 2e44e0efa28b6abd386ab2a504c18e959ef46937 (diff) | |
download | phosphor-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.cpp | 21 |
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 |