#pragma once #include "sdbusplus.hpp" #include "xyz/openbmc_project/Logging/Event/server.hpp" #include #include #include namespace phosphor { namespace events { using namespace phosphor::dbus::monitoring; using EntryIface = sdbusplus::server::object_t< sdbusplus::xyz::openbmc_project::Logging::server::Event>; /** @class Entry * @brief OpenBMC Event entry implementation. * @details A concrete implementation for the * xyz.openbmc_project.Event.Entry. */ class Entry : public EntryIface { 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. * @param[in] path - Path to attach at. * @param[in] eventId - The event entry id. * @param[in] timestamp - timestamp when the event created. * @param[in] msg - The message of the event. * @param[in] metaData - The event metadata. */ Entry(const std::string& path, uint64_t eventTimestamp, std::string&& msg, std::vector&& metaData) : EntryIface(SDBusPlus::getBus(), path.c_str(), EntryIface::action::defer_emit), objectPath(path) { timestamp(eventTimestamp); message(msg); additionalData(metaData); // Emit deferred signal. this->emit_object_added(); } /** @brief Constructor to create an empty event object with only * timestamp, caller should make a call to emit added signal. * @param[in] path - Path to attach at. * @param[in] timestamp - timestamp when the event created. */ Entry(const std::string& path, uint64_t eventTimestamp) : EntryIface(SDBusPlus::getBus(), path.c_str(), EntryIface::action::defer_emit), objectPath(path) { timestamp(eventTimestamp); } /** @brief Path of Object. */ std::string objectPath; }; } // namespace events } // namespace phosphor