blob: 4ff2a4d79cdedbe9f91d0cf9cad16b67cd2e7b37 [file] [log] [blame]
Chicago Duan184f6022020-04-17 11:30:49 +08001#include "common/utils.hpp"
2#include "softoff.hpp"
George Liu4c1a3fd2020-03-10 08:25:21 +08003
4#include <iostream>
5
6int main()
7{
Chicago Duan184f6022020-04-17 11:30:49 +08008 // Get a default event loop
9 auto event = sdeventplus::Event::get_default();
10
11 // Get a handle to system D-Bus.
12 auto& bus = pldm::utils::DBusHandler::getBus();
13
14 // Attach the bus to sd_event to service user requests
15 bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
16
17 pldm::SoftPowerOff softPower(bus, event.get());
18
19 if (softPower.isError())
20 {
21 std::cerr << "Host failed to gracefully shutdown, exiting "
22 "pldm-softpoweroff app\n";
23 return -1;
24 }
25
26 if (softPower.isCompleted())
27 {
28 std::cerr << "Host current state is not Running, exiting "
29 "pldm-softpoweroff app\n";
30 return 0;
31 }
32
33 // Send the gracefully shutdown request to the host and
34 // wait the host gracefully shutdown.
35 if (softPower.hostSoftOff(event))
36 {
37 std::cerr << "pldm-softpoweroff:Failure in sending soft off request to "
38 "the host. Exiting pldm-softpoweroff app\n";
39
40 return -1;
41 }
42
43 if (softPower.isTimerExpired() && softPower.isReceiveResponse())
44 {
45 pldm::utils::reportError(
46 "pldm soft off: Waiting for the host soft off timeout");
47 std::cerr
48 << "PLDM host soft off: ERROR! Wait for the host soft off timeout."
49 << "Exit the pldm-softpoweroff "
50 << "\n";
51 return -1;
52 }
53
George Liu4c1a3fd2020-03-10 08:25:21 +080054 return 0;
55}