| /* | 
 |  * SPDX-FileCopyrightText: Copyright (c) 2022-2024. All rights | 
 |  * reserved. SPDX-License-Identifier: Apache-2.0 | 
 |  */ | 
 | #pragma once | 
 |  | 
 | #include <sdbusplus/async/context.hpp> | 
 | #include <sdbusplus/async/task.hpp> | 
 |  | 
 | namespace gpio_presence | 
 | { | 
 |  | 
 | using AddedCallback = | 
 |     std::function<void(const sdbusplus::message::object_path&)>; | 
 |  | 
 | using RemovedCallback = | 
 |     std::function<void(const sdbusplus::message::object_path&)>; | 
 |  | 
 | class ConfigProvider | 
 | { | 
 |   public: | 
 |     explicit ConfigProvider(sdbusplus::async::context& ctx, | 
 |                             const std::string& interface); | 
 |  | 
 |     auto initialize(AddedCallback addConfig, RemovedCallback removeConfig) | 
 |         -> sdbusplus::async::task<void>; | 
 |  | 
 |   private: | 
 |     auto getConfig(AddedCallback addConfig) -> sdbusplus::async::task<void>; | 
 |  | 
 |     auto handleInterfacesAdded(AddedCallback addConfig) | 
 |         -> sdbusplus::async::task<void>; | 
 |  | 
 |     auto handleInterfacesRemoved(RemovedCallback removeConfig) | 
 |         -> sdbusplus::async::task<void>; | 
 |  | 
 |     // name of the dbus configuration interface | 
 |     std::string interface; | 
 |  | 
 |     sdbusplus::async::context& ctx; | 
 | }; | 
 |  | 
 | } // namespace gpio_presence |