#pragma once #include #include #include "xyz/openbmc_project/Logging/Entry/server.hpp" #include "org/openbmc/Associations/server.hpp" namespace phosphor { namespace logging { using EntryIfaces = sdbusplus::server::object::object< sdbusplus::xyz::openbmc_project::Logging::server::Entry, sdbusplus::org::openbmc::server::Associations>; using AssociationList = std::vector>; /** @class Entry * @brief OpenBMC logging entry implementation. * @details A concrete implementation for the * xyz.openbmc_project.Logging.Entry and * org.openbmc.Associations DBus APIs. */ class Entry : public EntryIfaces { public: Entry() = delete; Entry(const Entry&) = delete; Entry& operator=(const Entry&) = delete; Entry(Entry&&) = delete; Entry& operator=(Entry&&) = delete; virtual ~Entry() = default; /** @brief Constructor to put object onto bus at a dbus path. * Defer signal registration (pass true for deferSignal to the * base class) until after the properties are set. * @param[in] bus - Bus to attach to. * @param[in] path - Path to attach at. * @param[in] idErr - The error entry id. * @param[in] timestampErr - The commit timestamp. * @param[in] severityErr - The severity of the error. * @param[in] msgErr - The message of the error. * @param[in] additionalDataErr - The error metadata. */ Entry(sdbusplus::bus::bus& bus, const std::string& path, uint32_t idErr, uint64_t timestampErr, Level severityErr, std::string&& msgErr, std::vector&& additionalDataErr, AssociationList&& objects) : EntryIfaces(bus, path.c_str(), true) { id(idErr); severity(severityErr); timestamp(timestampErr); message(std::move(msgErr)); additionalData(std::move(additionalDataErr)); associations(std::move(objects)); // Emit deferred signal. this->emit_object_added(); }; }; } // namespace logging } // namespace phosphor