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