|  | #pragma once | 
|  |  | 
|  | #include <sdbusplus/bus.hpp> | 
|  | #include <sdbusplus/server/object.hpp> | 
|  | #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<std::tuple<std::string, std::string, std::string>>; | 
|  |  | 
|  | /** @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<std::string>&& 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 |