1262dcc1cSAlexander Hansen #pragma once 2262dcc1cSAlexander Hansen 3262dcc1cSAlexander Hansen #include "dbus_utility.hpp" 4262dcc1cSAlexander Hansen #include "utils/dbus_utils.hpp" 5262dcc1cSAlexander Hansen 6*d7857201SEd Tanous #include <sdbusplus/unpack_properties.hpp> 7*d7857201SEd Tanous 8*d7857201SEd Tanous #include <cstdint> 9262dcc1cSAlexander Hansen #include <optional> 10262dcc1cSAlexander Hansen #include <string> 11262dcc1cSAlexander Hansen 12262dcc1cSAlexander Hansen namespace redfish 13262dcc1cSAlexander Hansen { 14262dcc1cSAlexander Hansen struct DbusEventLogEntry 15262dcc1cSAlexander Hansen { 16262dcc1cSAlexander Hansen // represents a subset of an instance of dbus interface 17262dcc1cSAlexander Hansen // xyz.openbmc_project.Logging.Entry 18262dcc1cSAlexander Hansen 19262dcc1cSAlexander Hansen uint32_t Id = 0; 20262dcc1cSAlexander Hansen std::string Message; 21262dcc1cSAlexander Hansen const std::string* Path = nullptr; 22262dcc1cSAlexander Hansen const std::string* Resolution = nullptr; 23262dcc1cSAlexander Hansen bool Resolved = false; 24262dcc1cSAlexander Hansen std::string ServiceProviderNotify; 25262dcc1cSAlexander Hansen std::string Severity; 26262dcc1cSAlexander Hansen uint64_t Timestamp = 0; 27262dcc1cSAlexander Hansen uint64_t UpdateTimestamp = 0; 28262dcc1cSAlexander Hansen }; 29262dcc1cSAlexander Hansen 30262dcc1cSAlexander Hansen inline std::optional<DbusEventLogEntry> fillDbusEventLogEntryFromPropertyMap( 31262dcc1cSAlexander Hansen const dbus::utility::DBusPropertiesMap& resp) 32262dcc1cSAlexander Hansen { 33262dcc1cSAlexander Hansen DbusEventLogEntry entry; 34262dcc1cSAlexander Hansen 35262dcc1cSAlexander Hansen // clang-format off 36262dcc1cSAlexander Hansen bool success = sdbusplus::unpackPropertiesNoThrow( 37262dcc1cSAlexander Hansen dbus_utils::UnpackErrorPrinter(), resp, 38262dcc1cSAlexander Hansen "Id", entry.Id, 39262dcc1cSAlexander Hansen "Message", entry.Message, 40262dcc1cSAlexander Hansen "Path", entry.Path, 41262dcc1cSAlexander Hansen "Resolution", entry.Resolution, 42262dcc1cSAlexander Hansen "Resolved", entry.Resolved, 43262dcc1cSAlexander Hansen "ServiceProviderNotify", entry.ServiceProviderNotify, 44262dcc1cSAlexander Hansen "Severity", entry.Severity, 45262dcc1cSAlexander Hansen "Timestamp", entry.Timestamp, 46262dcc1cSAlexander Hansen "UpdateTimestamp", entry.UpdateTimestamp 47262dcc1cSAlexander Hansen ); 48262dcc1cSAlexander Hansen // clang-format on 49262dcc1cSAlexander Hansen if (!success) 50262dcc1cSAlexander Hansen { 51262dcc1cSAlexander Hansen return std::nullopt; 52262dcc1cSAlexander Hansen } 53262dcc1cSAlexander Hansen return entry; 54262dcc1cSAlexander Hansen } 55262dcc1cSAlexander Hansen } // namespace redfish 56