1 #pragma once
2 
3 #include <sdbusplus/bus.hpp>
4 #include <string>
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 timeSyncIntf = "xyz.openbmc_project.Time.Synchronization";
15 
16 /** @class Objects
17  *  @brief Fetch paths of settings D-bus objects of interest upon construction
18  */
19 struct Objects
20 {
21   public:
22     /** @brief Constructor - fetch settings objects
23      *
24      * @param[in] bus - The D-bus bus object
25      */
26     Objects() = delete;
27     explicit Objects(sdbusplus::bus::bus&);
28     Objects(const Objects&) = delete;
29     Objects& operator=(const Objects&) = delete;
30     Objects(Objects&&) = default;
31     Objects& operator=(Objects&&) = default;
32     ~Objects() = default;
33 
34     /** @brief Fetch D-bus service, given a path and an interface. The
35      *         service can't be cached because mapper returns unique
36      *         service names.
37      *
38      * @param[in] path - The D-bus object
39      * @param[in] interface - The D-bus interface
40      *
41      * @return std::string - the D-bus service
42      */
43     Service service(const Path& path, const Interface& interface) const;
44 
45     /** @brief time sync method settings object */
46     Path timeSyncMethod;
47 
48   private:
49     sdbusplus::bus::bus& bus;
50 };
51 
52 } // namespace settings
53