1 #pragma once 2 3 #include <string> 4 #include <sdbusplus/bus.hpp> 5 6 namespace settings 7 { 8 9 using Path = std::string; 10 using Service = std::string; 11 using Interface = std::string; 12 13 constexpr auto root = "/"; 14 constexpr auto autoRebootIntf = "xyz.openbmc_project.Control.Boot.RebootPolicy"; 15 constexpr auto powerRestoreIntf = 16 "xyz.openbmc_project.Control.Power.RestorePolicy"; 17 18 /** @class Objects 19 * @brief Fetch paths of settings d-bus objects of interest, upon construction 20 */ 21 struct Objects 22 { 23 public: 24 /** @brief Constructor - fetch settings objects 25 * 26 * @param[in] bus - The Dbus bus object 27 */ 28 Objects(sdbusplus::bus::bus& bus); 29 Objects(const Objects&) = delete; 30 Objects& operator=(const Objects&) = delete; 31 Objects(Objects&&) = delete; 32 Objects& operator=(Objects&&) = delete; 33 ~Objects() = default; 34 35 /** @brief Fetch d-bus service, given a path and an interface. The 36 * service can't be cached because mapper returns unique 37 * service names. 38 * 39 * @param[in] path - The Dbus object 40 * @param[in] interface - The Dbus interface 41 * 42 * @return std::string - the dbus service name 43 */ 44 Service service(const Path& path, const Interface& interface) const; 45 46 /** @brief host auto_reboot settings object */ 47 Path autoReboot; 48 49 /** @brief host power_restore_policy settings object */ 50 Path powerRestorePolicy; 51 52 /** @brief The Dbus bus object */ 53 sdbusplus::bus::bus& bus; 54 }; 55 56 } // namespace settings 57