1 #pragma once 2 3 #include "dbus_utility.hpp" 4 #include "utils/dbus_utils.hpp" 5 6 #include <optional> 7 #include <string> 8 9 namespace redfish 10 { 11 struct DbusEventLogEntry 12 { 13 // represents a subset of an instance of dbus interface 14 // xyz.openbmc_project.Logging.Entry 15 16 uint32_t Id = 0; 17 std::string Message; 18 const std::string* Path = nullptr; 19 const std::string* Resolution = nullptr; 20 bool Resolved = false; 21 std::string ServiceProviderNotify; 22 std::string Severity; 23 uint64_t Timestamp = 0; 24 uint64_t UpdateTimestamp = 0; 25 }; 26 27 inline std::optional<DbusEventLogEntry> fillDbusEventLogEntryFromPropertyMap( 28 const dbus::utility::DBusPropertiesMap& resp) 29 { 30 DbusEventLogEntry entry; 31 32 // clang-format off 33 bool success = sdbusplus::unpackPropertiesNoThrow( 34 dbus_utils::UnpackErrorPrinter(), resp, 35 "Id", entry.Id, 36 "Message", entry.Message, 37 "Path", entry.Path, 38 "Resolution", entry.Resolution, 39 "Resolved", entry.Resolved, 40 "ServiceProviderNotify", entry.ServiceProviderNotify, 41 "Severity", entry.Severity, 42 "Timestamp", entry.Timestamp, 43 "UpdateTimestamp", entry.UpdateTimestamp 44 ); 45 // clang-format on 46 if (!success) 47 { 48 return std::nullopt; 49 } 50 return entry; 51 } 52 } // namespace redfish 53