1*8c4b1d99SAlexander Hansen /* 2*8c4b1d99SAlexander Hansen * SPDX-FileCopyrightText: Copyright (c) 2022-2024. All rights 3*8c4b1d99SAlexander Hansen * reserved. SPDX-License-Identifier: Apache-2.0 4*8c4b1d99SAlexander Hansen */ 5*8c4b1d99SAlexander Hansen #pragma once 6*8c4b1d99SAlexander Hansen 7*8c4b1d99SAlexander Hansen #include <sdbusplus/async/context.hpp> 8*8c4b1d99SAlexander Hansen #include <sdbusplus/async/task.hpp> 9*8c4b1d99SAlexander Hansen 10*8c4b1d99SAlexander Hansen namespace gpio_presence 11*8c4b1d99SAlexander Hansen { 12*8c4b1d99SAlexander Hansen 13*8c4b1d99SAlexander Hansen using AddedCallback = 14*8c4b1d99SAlexander Hansen std::function<void(const sdbusplus::message::object_path&)>; 15*8c4b1d99SAlexander Hansen 16*8c4b1d99SAlexander Hansen using RemovedCallback = 17*8c4b1d99SAlexander Hansen std::function<void(const sdbusplus::message::object_path&)>; 18*8c4b1d99SAlexander Hansen 19*8c4b1d99SAlexander Hansen class ConfigProvider 20*8c4b1d99SAlexander Hansen { 21*8c4b1d99SAlexander Hansen public: 22*8c4b1d99SAlexander Hansen explicit ConfigProvider(sdbusplus::async::context& ctx, 23*8c4b1d99SAlexander Hansen const std::string& interface); 24*8c4b1d99SAlexander Hansen 25*8c4b1d99SAlexander Hansen auto initialize(AddedCallback addConfig, RemovedCallback removeConfig) 26*8c4b1d99SAlexander Hansen -> sdbusplus::async::task<void>; 27*8c4b1d99SAlexander Hansen 28*8c4b1d99SAlexander Hansen private: 29*8c4b1d99SAlexander Hansen auto getConfig(AddedCallback addConfig) -> sdbusplus::async::task<void>; 30*8c4b1d99SAlexander Hansen 31*8c4b1d99SAlexander Hansen auto handleInterfacesAdded(AddedCallback addConfig) 32*8c4b1d99SAlexander Hansen -> sdbusplus::async::task<void>; 33*8c4b1d99SAlexander Hansen 34*8c4b1d99SAlexander Hansen auto handleInterfacesRemoved(RemovedCallback removeConfig) 35*8c4b1d99SAlexander Hansen -> sdbusplus::async::task<void>; 36*8c4b1d99SAlexander Hansen 37*8c4b1d99SAlexander Hansen // name of the dbus configuration interface 38*8c4b1d99SAlexander Hansen std::string interface; 39*8c4b1d99SAlexander Hansen 40*8c4b1d99SAlexander Hansen sdbusplus::async::context& ctx; 41*8c4b1d99SAlexander Hansen }; 42*8c4b1d99SAlexander Hansen 43*8c4b1d99SAlexander Hansen } // namespace gpio_presence 44