blob: 7c739982d881f80ecbd1ac5d52d74bbb87cec1c5 [file] [log] [blame]
#pragma once
#include <sdbusplus/async.hpp>
#include <sdbusplus/message/native_types.hpp>
#include <functional>
#include <string>
#include <vector>
namespace entity_manager
{
class EntityManagerInterface
{
public:
using Callback_t = std::function<void(
const sdbusplus::message::object_path&, const std::string&)>;
using interface_list_t = std::vector<std::string>;
static constexpr auto serviceName = "xyz.openbmc_project.EntityManager";
EntityManagerInterface() = delete;
EntityManagerInterface(sdbusplus::async::context& ctx,
const interface_list_t& interfaceNames,
Callback_t addedCallback,
Callback_t removedCallback);
/** Get the inventory info from Entity Manager */
auto handleInventoryGet() -> sdbusplus::async::task<>;
private:
/** @brief Handle async inventory add from Entity Manager */
auto handleInventoryAdded() -> sdbusplus::async::task<>;
/** @brief Handle async inventory remove from Entity Manager */
auto handleInventoryRemoved() -> sdbusplus::async::task<>;
sdbusplus::async::context& ctx;
interface_list_t interfaceNames;
Callback_t addedCallback;
Callback_t removedCallback;
};
} // namespace entity_manager