diff options
Diffstat (limited to 'src/sdbusplus.hpp')
-rw-r--r-- | src/sdbusplus.hpp | 172 |
1 files changed, 73 insertions, 99 deletions
diff --git a/src/sdbusplus.hpp b/src/sdbusplus.hpp index 1a2c9c2..1b54582 100644 --- a/src/sdbusplus.hpp +++ b/src/sdbusplus.hpp @@ -19,116 +19,90 @@ namespace monitoring */ class SDBusPlus { - private: - static auto& getWatches() - { - static std::vector<sdbusplus::bus::match::match> watches; - return watches; - } + private: + static auto& getWatches() + { + static std::vector<sdbusplus::bus::match::match> watches; + return watches; + } - public: - static auto& getBus() - { - static auto bus = sdbusplus::bus::new_default(); - return bus; - } + public: + static auto& getBus() + { + static auto bus = sdbusplus::bus::new_default(); + return bus; + } - /** @brief Invoke a method; ignore reply. */ - template <typename ...Args> - static void callMethodNoReply( - const std::string& busName, - const std::string& path, - const std::string& interface, - const std::string& method, - Args&& ... args) - { - auto reqMsg = getBus().new_method_call( - busName.c_str(), - path.c_str(), - interface.c_str(), - method.c_str()); - reqMsg.append(std::forward<Args>(args)...); - getBus().call_noreply(reqMsg); + /** @brief Invoke a method; ignore reply. */ + template <typename... Args> + static void callMethodNoReply(const std::string& busName, + const std::string& path, + const std::string& interface, + const std::string& method, Args&&... args) + { + auto reqMsg = getBus().new_method_call( + busName.c_str(), path.c_str(), interface.c_str(), method.c_str()); + reqMsg.append(std::forward<Args>(args)...); + getBus().call_noreply(reqMsg); - // TODO: openbmc/openbmc#1719 - // invoke these methods async, with a callback - // handler that checks for errors and logs. - } + // TODO: openbmc/openbmc#1719 + // invoke these methods async, with a callback + // handler that checks for errors and logs. + } - /** @brief Invoke a method. */ - template <typename ...Args> - static auto callMethod( - const std::string& busName, - const std::string& path, - const std::string& interface, - const std::string& method, - Args&& ... args) - { - auto reqMsg = getBus().new_method_call( - busName.c_str(), - path.c_str(), - interface.c_str(), - method.c_str()); - reqMsg.append(std::forward<Args>(args)...); - return getBus().call(reqMsg); - } + /** @brief Invoke a method. */ + template <typename... Args> + static auto callMethod(const std::string& busName, const std::string& path, + const std::string& interface, + const std::string& method, Args&&... args) + { + auto reqMsg = getBus().new_method_call( + busName.c_str(), path.c_str(), interface.c_str(), method.c_str()); + reqMsg.append(std::forward<Args>(args)...); + return getBus().call(reqMsg); + } - /** @brief Invoke a method and read the response. */ - template <typename Ret, typename ...Args> - static auto callMethodAndRead( - const std::string& busName, - const std::string& path, - const std::string& interface, - const std::string& method, - Args&& ... args) - { - Ret resp; - sdbusplus::message::message respMsg = - callMethod<Args...>( - busName, - path, - interface, - method, - std::forward<Args>(args)...); - respMsg.read(resp); - return resp; - } + /** @brief Invoke a method and read the response. */ + template <typename Ret, typename... Args> + static auto callMethodAndRead(const std::string& busName, + const std::string& path, + const std::string& interface, + const std::string& method, Args&&... args) + { + Ret resp; + sdbusplus::message::message respMsg = callMethod<Args...>( + busName, path, interface, method, std::forward<Args>(args)...); + respMsg.read(resp); + return resp; + } - /** @brief Register a DBus signal callback. */ - static auto addMatch( - const std::string& match, - const sdbusplus::bus::match::match::callback_t& callback) - { - getWatches().emplace_back( - getBus(), - match, - callback); - } + /** @brief Register a DBus signal callback. */ + static auto + addMatch(const std::string& match, + const sdbusplus::bus::match::match::callback_t& callback) + { + getWatches().emplace_back(getBus(), match, callback); + } - /** @brief Look up the bus name for a path and interface */ - static auto getBusName( - const std::string& path, - const std::string& interface) - { - std::vector<std::string> interfaces{interface}; + /** @brief Look up the bus name for a path and interface */ + static auto getBusName(const std::string& path, + const std::string& interface) + { + std::vector<std::string> interfaces{interface}; - auto object = callMethodAndRead<GetObject>( - MAPPER_BUSNAME, - MAPPER_PATH, - MAPPER_INTERFACE, - "GetObject", - path, - interfaces); + auto object = callMethodAndRead<GetObject>( + MAPPER_BUSNAME, MAPPER_PATH, MAPPER_INTERFACE, "GetObject", path, + interfaces); - std::string name; - if (!object.empty()) - { - name = object.begin()->first; - } - return name; + std::string name; + if (!object.empty()) + { + name = object.begin()->first; } + return name; + } - friend Loop; + friend Loop; }; } // namespace monitoring |