118aa044eSDeepak Kodihalli #pragma once 218aa044eSDeepak Kodihalli 30b02be92SPatrick Venture #include <sdbusplus/bus.hpp> 4fbc6c9d7SPatrick Williams 518aa044eSDeepak Kodihalli #include <string> 613791bd5SDeepak Kodihalli #include <tuple> 718aa044eSDeepak Kodihalli 818aa044eSDeepak Kodihalli namespace settings 918aa044eSDeepak Kodihalli { 1018aa044eSDeepak Kodihalli 1118aa044eSDeepak Kodihalli using Path = std::string; 1218aa044eSDeepak Kodihalli using Service = std::string; 1318aa044eSDeepak Kodihalli using Interface = std::string; 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 */ 275d82f474SPatrick Williams Objects(sdbusplus::bus_t& bus, const std::vector<Interface>& filter); 2818aa044eSDeepak Kodihalli Objects(const Objects&) = default; 29*85134117SGeorge Liu Objects& operator=(const Objects&) = delete; 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 */ 46e602709dSDeepak Kodihalli std::map<Interface, std::vector<Path>> map; 4718aa044eSDeepak Kodihalli 4818aa044eSDeepak Kodihalli /** @brief The Dbus bus object */ 495d82f474SPatrick Williams sdbusplus::bus_t& bus; 5018aa044eSDeepak Kodihalli }; 5118aa044eSDeepak Kodihalli 5218aa044eSDeepak Kodihalli } // namespace settings 53