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 timeOwnerIntf = "xyz.openbmc_project.Time.Owner";
15 constexpr auto timeSyncIntf = "xyz.openbmc_project.Time.Synchronization";
16 constexpr auto hostStateIntf = "xyz.openbmc_project.State.Host";
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 D-bus bus object
27          */
28         Objects();
29         Objects(const Objects&) = default;
30         Objects& operator=(const Objects&) = default;
31         Objects(Objects&&) = default;
32         Objects& operator=(Objects&&) = default;
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 D-bus object
40          * @param[in] interface - The D-bus interface
41          *
42          * @return std::string - the D-bus service
43          */
44         Service service(const Path& path, const Interface& interface) const;
45 
46         /** @brief time owner settings object */
47         Path timeOwner;
48 
49         /** @brief time sync method settings object */
50         Path timeSyncMethod;
51 
52         /** @brief host state object */
53         Path hostState;
54 };
55 
56 } // namespace settings
57