Coverage Report

Created: 2026-10-16 07:02

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/estoraged/include/getConfig.hpp
Line
Count
Source
1
#pragma once
2
3
#include <boost/container/flat_map.hpp>
4
#include <sdbusplus/asio/connection.hpp>
5
6
#include <cstdlib>
7
#include <functional>
8
#include <memory>
9
10
namespace estoraged
11
{
12
13
using BasicVariantType =
14
    std::variant<std::vector<std::string>, std::string, int64_t, uint64_t,
15
                 double, int32_t, uint32_t, int16_t, uint16_t, uint8_t, bool>;
16
17
/* Map of properties for the config interface. */
18
using StorageData = boost::container::flat_map<std::string, BasicVariantType>;
19
using ManagedStorageType =
20
    boost::container::flat_map<sdbusplus::object_path, StorageData>;
21
22
const constexpr char* emmcConfigInterface =
23
    "xyz.openbmc_project.Configuration.EmmcDevice";
24
25
/** @class GetStorageConfiguration
26
 *  @brief Object used to find Entity Manager config objects.
27
 *  @details eStoraged will create a new D-Bus object for each config object.
28
 */
29
class GetStorageConfiguration :
30
    public std::enable_shared_from_this<GetStorageConfiguration>
31
{
32
  public:
33
    /** @brief Constructor for GetStorageConfiguration
34
     *
35
     *  @param[in] connection - shared_ptr to D-Bus connection object.
36
     *  @param[in] callbackFunc - callback to run after finding the config
37
     *    objects.
38
     */
39
    GetStorageConfiguration(
40
        std::shared_ptr<sdbusplus::asio::connection> connection,
41
        std::function<void(ManagedStorageType& resp)>&& callbackFunc) :
42
        dbusConnection(std::move(connection)), callback(std::move(callbackFunc))
43
0
    {}
44
45
    GetStorageConfiguration& operator=(const GetStorageConfiguration&) = delete;
46
    GetStorageConfiguration(const GetStorageConfiguration&) = delete;
47
    GetStorageConfiguration(GetStorageConfiguration&&) = default;
48
    GetStorageConfiguration& operator=(GetStorageConfiguration&&) = default;
49
50
    /** @brief Destructor for GetStorageConfiguration.
51
     *  @details This will execute the callback provided to the constructor.
52
     */
53
    ~GetStorageConfiguration();
54
55
    /** @brief Find the Entity Manager config objects for eStoraged. */
56
    void getConfiguration();
57
58
    /** @brief Get the D-Bus properties from the config object.
59
     *
60
     *  @param[in] path - D-Bus object path of the config object.
61
     *  @param[in] owner - D-Bus service that owns the config object.
62
     *  @param[in] retries - (optional) Number of times to retry, if needed.
63
     */
64
    void getStorageInfo(const std::string& path, const std::string& owner,
65
                        size_t retries = 5);
66
67
    /** @brief Map containing config objects with corresponding properties. */
68
    ManagedStorageType respData;
69
70
    /** @brief Connection to D-Bus. */
71
    std::shared_ptr<sdbusplus::asio::connection> dbusConnection;
72
73
  private:
74
    /** @brief callback to process the config object data in respData. */
75
    std::function<void(ManagedStorageType& resp)> callback;
76
};
77
78
} // namespace estoraged