171230efdSCarol Wang #include <cstdlib>
271230efdSCarol Wang #include <exception>
371230efdSCarol Wang #include <sdbusplus/bus.hpp>
4*1dbbef42SCarol Wang #include <filesystem>
571230efdSCarol Wang #include "config.h"
671230efdSCarol Wang #include "scheduled_host_transition.hpp"
771230efdSCarol Wang 
871230efdSCarol Wang int main()
971230efdSCarol Wang {
10*1dbbef42SCarol Wang     namespace fs = std::filesystem;
11*1dbbef42SCarol Wang 
126a5db3d3SCarol Wang     // Get a default event loop
136a5db3d3SCarol Wang     auto event = sdeventplus::Event::get_default();
146a5db3d3SCarol Wang 
156a5db3d3SCarol Wang     // Get a handle to system dbus
1671230efdSCarol Wang     auto bus = sdbusplus::bus::new_default();
1771230efdSCarol Wang 
1871230efdSCarol Wang     // For now, we only have one instance of the host
1971230efdSCarol Wang     auto objPathInst = std::string{HOST_OBJPATH} + '0';
2071230efdSCarol Wang 
21*1dbbef42SCarol Wang     // Check SCHEDULED_HOST_TRANSITION_PERSIST_PATH
22*1dbbef42SCarol Wang     auto dir = fs::path(SCHEDULED_HOST_TRANSITION_PERSIST_PATH).parent_path();
23*1dbbef42SCarol Wang     if (!fs::exists(dir))
24*1dbbef42SCarol Wang     {
25*1dbbef42SCarol Wang         fs::create_directories(dir);
26*1dbbef42SCarol Wang     }
27*1dbbef42SCarol Wang 
2871230efdSCarol Wang     // Add sdbusplus ObjectManager.
2971230efdSCarol Wang     sdbusplus::server::manager::manager objManager(bus, objPathInst.c_str());
3071230efdSCarol Wang 
3171230efdSCarol Wang     phosphor::state::manager::ScheduledHostTransition manager(
326a5db3d3SCarol Wang         bus, objPathInst.c_str(), event);
3371230efdSCarol Wang 
3471230efdSCarol Wang     bus.request_name(SCHEDULED_HOST_TRANSITION_BUSNAME);
3571230efdSCarol Wang 
366a5db3d3SCarol Wang     // Attach the bus to sd_event to service user requests
376a5db3d3SCarol Wang     bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
386a5db3d3SCarol Wang     event.loop();
396a5db3d3SCarol Wang 
4071230efdSCarol Wang     return 0;
4171230efdSCarol Wang }
42