1*e426b589SAndrew Geissler #include "config.h" 2*e426b589SAndrew Geissler 3*e426b589SAndrew Geissler #include "scheduled_host_transition.hpp" 4*e426b589SAndrew Geissler 5*e426b589SAndrew Geissler #include <sdbusplus/bus.hpp> 6*e426b589SAndrew Geissler 771230efdSCarol Wang #include <cstdlib> 871230efdSCarol Wang #include <exception> 91dbbef42SCarol Wang #include <filesystem> 1071230efdSCarol Wang 1171230efdSCarol Wang int main() 1271230efdSCarol Wang { 131dbbef42SCarol Wang namespace fs = std::filesystem; 141dbbef42SCarol Wang 156a5db3d3SCarol Wang // Get a default event loop 166a5db3d3SCarol Wang auto event = sdeventplus::Event::get_default(); 176a5db3d3SCarol Wang 186a5db3d3SCarol Wang // Get a handle to system dbus 1971230efdSCarol Wang auto bus = sdbusplus::bus::new_default(); 2071230efdSCarol Wang 2171230efdSCarol Wang // For now, we only have one instance of the host 2271230efdSCarol Wang auto objPathInst = std::string{HOST_OBJPATH} + '0'; 2371230efdSCarol Wang 241dbbef42SCarol Wang // Check SCHEDULED_HOST_TRANSITION_PERSIST_PATH 251dbbef42SCarol Wang auto dir = fs::path(SCHEDULED_HOST_TRANSITION_PERSIST_PATH).parent_path(); 261dbbef42SCarol Wang if (!fs::exists(dir)) 271dbbef42SCarol Wang { 281dbbef42SCarol Wang fs::create_directories(dir); 291dbbef42SCarol Wang } 301dbbef42SCarol Wang 3171230efdSCarol Wang // Add sdbusplus ObjectManager. 3271230efdSCarol Wang sdbusplus::server::manager::manager objManager(bus, objPathInst.c_str()); 3371230efdSCarol Wang 3471230efdSCarol Wang phosphor::state::manager::ScheduledHostTransition manager( 356a5db3d3SCarol Wang bus, objPathInst.c_str(), event); 3671230efdSCarol Wang 3771230efdSCarol Wang bus.request_name(SCHEDULED_HOST_TRANSITION_BUSNAME); 3871230efdSCarol Wang 396a5db3d3SCarol Wang // Attach the bus to sd_event to service user requests 406a5db3d3SCarol Wang bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL); 416a5db3d3SCarol Wang event.loop(); 426a5db3d3SCarol Wang 4371230efdSCarol Wang return 0; 4471230efdSCarol Wang } 45