| /* |
| * 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 |