summaryrefslogtreecommitdiffstats
path: root/libipmid/systemintf-sdbus.cpp
blob: abd30ec176d75aff8bf161b1fd79ebd598107e9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <ipmid/api.hpp>
#include <memory>
#include <sdbusplus/asio/connection.hpp>

namespace
{

std::unique_ptr<sdbusplus::asio::connection> sdbusp;

} // namespace

/**
 * @brief ipmid_get_sdbus_plus_handler is used by some ipmi providers
 *
 * @return: a reference to a unique pointer of the systemd connection
 *          managed by the systemintfcmds code
 */
std::unique_ptr<sdbusplus::asio::connection>& ipmid_get_sdbus_plus_handler()
{
    if (!sdbusp)
    {
        // Create a new sdbus connection so it can have a well-known name
        sd_bus* bus = nullptr;
        sd_bus_open_system(&bus);
        if (bus)
        {
            sdbusp = std::make_unique<sdbusplus::asio::connection>(
                *getIoContext(), bus);
        }
    }
    return sdbusp;
}
OpenPOWER on IntegriCloud