blob: 7571fe15adf6a55fde54d1abd32d5cb21acef271 [file] [log] [blame]
Deepak Kodihallia646edd2017-07-25 07:28:45 -05001#pragma once
2
3#include <string>
4#include <sdbusplus/bus.hpp>
5
6namespace settings
7{
8
9using Path = std::string;
10using Service = std::string;
11using Interface = std::string;
12
13constexpr auto root = "/";
Andrew Geissler58a18012018-01-19 19:36:05 -080014constexpr auto autoRebootIntf = "xyz.openbmc_project.Control.Boot.RebootPolicy";
Deepak Kodihallia646edd2017-07-25 07:28:45 -050015constexpr 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 */
21struct Objects
22{
Andrew Geissler58a18012018-01-19 19:36:05 -080023 public:
24 /** @brief Constructor - fetch settings objects
25 *
26 * @param[in] bus - The Dbus bus object
27 */
Andrew Geissler514474d2019-09-12 14:15:07 -050028 explicit Objects(sdbusplus::bus::bus& bus);
Andrew Geissler58a18012018-01-19 19:36:05 -080029 Objects(const Objects&) = delete;
30 Objects& operator=(const Objects&) = delete;
31 Objects(Objects&&) = delete;
32 Objects& operator=(Objects&&) = delete;
33 ~Objects() = default;
Deepak Kodihallia646edd2017-07-25 07:28:45 -050034
Andrew Geissler58a18012018-01-19 19:36:05 -080035 /** @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;
Deepak Kodihallia646edd2017-07-25 07:28:45 -050045
Andrew Geissler58a18012018-01-19 19:36:05 -080046 /** @brief host auto_reboot settings object */
47 Path autoReboot;
Deepak Kodihallia646edd2017-07-25 07:28:45 -050048
Andrew Geissler58a18012018-01-19 19:36:05 -080049 /** @brief host power_restore_policy settings object */
50 Path powerRestorePolicy;
Deepak Kodihallia646edd2017-07-25 07:28:45 -050051
Andrew Geissler58a18012018-01-19 19:36:05 -080052 /** @brief The Dbus bus object */
53 sdbusplus::bus::bus& bus;
Deepak Kodihallia646edd2017-07-25 07:28:45 -050054};
55
56} // namespace settings