diff options
Diffstat (limited to 'control/matches.hpp')
-rw-r--r-- | control/matches.hpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/control/matches.hpp b/control/matches.hpp new file mode 100644 index 0000000..855a749 --- /dev/null +++ b/control/matches.hpp @@ -0,0 +1,76 @@ +#pragma once + +#include <sdbusplus/bus.hpp> +#include "sdbusplus.hpp" + +namespace phosphor +{ +namespace fan +{ +namespace control +{ +namespace match +{ + +using namespace phosphor::fan; +using namespace sdbusplus::bus::match; +using InternalFailure = sdbusplus::xyz::openbmc_project::Common:: + Error::InternalFailure; + +/** + * @brief A match function that constructs a PropertiesChanged match string + * @details Constructs a PropertiesChanged match string with a given object + * path and interface + * + * @param[in] obj - Object's path name + * @param[in] iface - Interface name + * + * @return - A PropertiesChanged match string + */ +inline auto propertiesChanged(const std::string& obj, const std::string& iface) +{ + return rules::propertiesChanged(obj, iface); +} + +/** + * @brief A match function that constructs an InterfacesAdded match string + * @details Constructs an InterfacesAdded match string with a given object + * path + * + * @param[in] obj - Object's path name + * + * @return - An InterfacesAdded match string + */ +inline auto interfacesAdded(const std::string& obj) +{ + return rules::interfacesAdded(obj); +} + +/** + * @brief A match function that constructs a NameOwnerChanged match string + * @details Constructs a NameOwnerChanged match string with a given object + * path and interface + * + * @param[in] obj - Object's path name + * @param[in] iface - Interface name + * + * @return - A NameOwnerChanged match string + */ +inline auto nameOwnerChanged(const std::string& obj, const std::string& iface) +{ + std::string noc; + try + { + noc = rules::nameOwnerChanged(util::SDBusPlus::getService(obj, iface)); + } + catch (const InternalFailure& ife) + { + // Unable to construct NameOwnerChanged match string + } + return noc; +} + +} // namespace match +} // namespace control +} // namespace fan +} // namespace phosphor |