118aa044eSDeepak Kodihalli #pragma once 218aa044eSDeepak Kodihalli 318aa044eSDeepak Kodihalli #include <string> 418aa044eSDeepak Kodihalli #include <sdbusplus/bus.hpp> 518aa044eSDeepak Kodihalli 618aa044eSDeepak Kodihalli namespace settings 718aa044eSDeepak Kodihalli { 818aa044eSDeepak Kodihalli 918aa044eSDeepak Kodihalli using Path = std::string; 1018aa044eSDeepak Kodihalli using Service = std::string; 1118aa044eSDeepak Kodihalli using Interface = std::string; 1218aa044eSDeepak Kodihalli 1318aa044eSDeepak Kodihalli constexpr auto root = "/"; 1418aa044eSDeepak Kodihalli 1518aa044eSDeepak Kodihalli /** @class Objects 1618aa044eSDeepak Kodihalli * @brief Fetch paths of settings d-bus objects of interest, upon construction 1718aa044eSDeepak Kodihalli */ 1818aa044eSDeepak Kodihalli struct Objects 1918aa044eSDeepak Kodihalli { 2018aa044eSDeepak Kodihalli public: 2118aa044eSDeepak Kodihalli /** @brief Constructor - fetch settings objects 2218aa044eSDeepak Kodihalli * 2318aa044eSDeepak Kodihalli * @param[in] bus - The Dbus bus object 2418aa044eSDeepak Kodihalli * @param[in] filter - A vector of settings interfaces the caller is 2518aa044eSDeepak Kodihalli * interested in. 2618aa044eSDeepak Kodihalli */ 2718aa044eSDeepak Kodihalli Objects(sdbusplus::bus::bus& bus, const std::vector<Interface>& filter); 2818aa044eSDeepak Kodihalli Objects(const Objects&) = default; 2918aa044eSDeepak Kodihalli Objects& operator=(const Objects&) = default; 3018aa044eSDeepak Kodihalli Objects(Objects&&) = delete; 3118aa044eSDeepak Kodihalli Objects& operator=(Objects&&) = delete; 3218aa044eSDeepak Kodihalli ~Objects() = default; 3318aa044eSDeepak Kodihalli 3418aa044eSDeepak Kodihalli /** @brief Fetch d-bus service, given a path and an interface. The 3518aa044eSDeepak Kodihalli * service can't be cached because mapper returns unique 3618aa044eSDeepak Kodihalli * service names. 3718aa044eSDeepak Kodihalli * 3818aa044eSDeepak Kodihalli * @param[in] path - The Dbus object 3918aa044eSDeepak Kodihalli * @param[in] interface - The Dbus interface 4018aa044eSDeepak Kodihalli * 4118aa044eSDeepak Kodihalli * @return std::string - the dbus service 4218aa044eSDeepak Kodihalli */ 4318aa044eSDeepak Kodihalli Service service(const Path& path, const Interface& interface) const; 4418aa044eSDeepak Kodihalli 4518aa044eSDeepak Kodihalli /** @brief map of settings objects */ 46*e602709dSDeepak Kodihalli std::map<Interface, std::vector<Path>> map; 4718aa044eSDeepak Kodihalli 4818aa044eSDeepak Kodihalli /** @brief The Dbus bus object */ 4918aa044eSDeepak Kodihalli sdbusplus::bus::bus& bus; 5018aa044eSDeepak Kodihalli }; 5118aa044eSDeepak Kodihalli 5218aa044eSDeepak Kodihalli } // namespace settings 53