| #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; |
| } |