summaryrefslogtreecommitdiffstats
path: root/occ_finder.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'occ_finder.hpp')
-rw-r--r--occ_finder.hpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/occ_finder.hpp b/occ_finder.hpp
index c096c4b..557d468 100644
--- a/occ_finder.hpp
+++ b/occ_finder.hpp
@@ -11,6 +11,15 @@ namespace occ
namespace finder
{
+// Map of property and interface
+// This is used to filter the OCCs based on the property value
+using Interface = std::string;
+using Property = std::string;
+
+using Value = bool;
+using Match = std::tuple<Interface, Property, Value>;
+using Criteria = std::vector<Match>;
+
/** @brief Get OCC objects on the system by mapping them to CPU inventory
* @returns vector of occ objects, such as occ0, occ1, and so on.
*
@@ -18,6 +27,39 @@ namespace finder
*/
std::vector<std::string> get(sdbusplus::bus::bus& bus);
+/** @brief Returns true if the inventory item matches the criteria
+ *
+ * @param[in] bus - sdbusplus handler
+ * @param[in] path - D-Bus path
+ * @param[in] service - D-Bus service name
+ * @param[in] match - Criteria match vector
+ *
+ * @return true on match, false otherwise
+ */
+bool matchCriteria(sdbusplus::bus::bus& bus,
+ const std::string& path,
+ const std::string& service,
+ const Criteria& match);
+
+/** @brief Gets the value associated with the given object
+ * and the interface.
+ *
+ * @param[in] bus - sdbusplus handler
+ * @param[in] service - D-Bus service name.
+ * @param[in] objPath - D-Bus object path.
+ * @param[in] interface - D-Bus interface.
+ * @param[in] property - Name of the property.
+ *
+ * @return Value of the property
+ */
+
+template <typename T>
+T getDbusProperty(sdbusplus::bus::bus& bus,
+ const std::string& service,
+ const std::string& objPath,
+ const std::string& interface,
+ const std::string& property);
+
} // namespace finder
} // namespace occ
} // namespace open_power
OpenPOWER on IntegriCloud