blob: e3d2098ef001c3fc4606ad825942a336c2e3b289 [file] [log] [blame] [edit]
#include "include/dbus_utility.hpp"
#ifdef UNIT_TEST
#include "test/include/mock_dbus_utility.hpp"
#endif
void DbusUtility::sendSdBusSignal(
const char* signalName,
const std::shared_ptr<sdbusplus::asio::dbus_interface>& ifaceLog)
{
try
{
sdbusplus::message::message msg = ifaceLog->new_signal(signalName);
msg.signal_send();
}
catch (const sdbusplus::exception::exception& e)
{
lg2::error("Failed to send sdbus signal {SIGNAL}", "SIGNAL",
signalName);
}
}
void DbusUtility::dbusAddStoredLog(const std::string& logFileName)
{
std::cerr << "called\n";
lg2::info("Initiating D-Bus connection");
conn = std::make_shared<sdbusplus::asio::connection>(io);
lg2::info("Requesting D-Bus name");
conn->request_name(powerFaultService);
lg2::info("Creating D-Bus object server");
server = std::make_shared<sdbusplus::asio::object_server>(conn);
std::filesystem::path logPath = std::filesystem::path(powerFaultPath) /
logFileName;
std::shared_ptr<sdbusplus::asio::dbus_interface> ifaceLog =
server->add_interface(logPath.c_str(), powerFaultInterface);
lg2::info("Registering D-Bus properties and signals");
ifaceLog->register_property("Filename", logFileName);
ifaceLog->register_signal<void>("PowerFaultLogCompleted");
ifaceLog->register_signal<void>("PowerFaultLogCreated");
ifaceLog->register_signal<void>("PowerFaultLogDeleted");
lg2::info("Initializing D-Bus interface");
ifaceLog->initialize();
lg2::info("Sending D-Bus signal PowerFaultLogCompleted");
sendSdBusSignal("PowerFaultLogCompleted", ifaceLog);
lg2::info("Sending D-Bus signal PowerFaultLogCreated");
sdbusplus::message::message msg =
ifaceLog->new_signal("PowerFaultLogCreated");
msg.signal_send();
lg2::info("Running D-Bus event loop");
io.run();
}
DbusUtil* getDbusUtil()
{
static DbusUtil dbusUtil;
return &dbusUtil;
}