| #pragma once |
| |
| #include "sdbusplus.hpp" |
| #include "xyz/openbmc_project/Logging/Event/server.hpp" |
| |
| #include <sdbusplus/bus.hpp> |
| #include <sdbusplus/server/object.hpp> |
| |
| #include <string> |
| |
| 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<std::string>&& 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 |