blob: 4ff2a4d79cdedbe9f91d0cf9cad16b67cd2e7b37 [file] [log] [blame]
#include "common/utils.hpp"
#include "softoff.hpp"
#include <iostream>
int main()
{
// Get a default event loop
auto event = sdeventplus::Event::get_default();
// Get a handle to system D-Bus.
auto& bus = pldm::utils::DBusHandler::getBus();
// Attach the bus to sd_event to service user requests
bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
pldm::SoftPowerOff softPower(bus, event.get());
if (softPower.isError())
{
std::cerr << "Host failed to gracefully shutdown, exiting "
"pldm-softpoweroff app\n";
return -1;
}
if (softPower.isCompleted())
{
std::cerr << "Host current state is not Running, exiting "
"pldm-softpoweroff app\n";
return 0;
}
// Send the gracefully shutdown request to the host and
// wait the host gracefully shutdown.
if (softPower.hostSoftOff(event))
{
std::cerr << "pldm-softpoweroff:Failure in sending soft off request to "
"the host. Exiting pldm-softpoweroff app\n";
return -1;
}
if (softPower.isTimerExpired() && softPower.isReceiveResponse())
{
pldm::utils::reportError(
"pldm soft off: Waiting for the host soft off timeout");
std::cerr
<< "PLDM host soft off: ERROR! Wait for the host soft off timeout."
<< "Exit the pldm-softpoweroff "
<< "\n";
return -1;
}
return 0;
}