From 3e84ec6645bcea669805947f1409b58b4b0d9f72 Mon Sep 17 00:00:00 2001 From: Ratan Gupta Date: Fri, 6 Oct 2017 21:37:01 +0530 Subject: Implement create function in event manager Implement the logging event interface. Create the dbus event object based on the event type. Change-Id: Idfa9e5c43f170d904fd25f22d73e0509b1785fc9 Signed-off-by: Ratan Gupta --- src/event_entry.hpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/event_entry.hpp (limited to 'src/event_entry.hpp') diff --git a/src/event_entry.hpp b/src/event_entry.hpp new file mode 100644 index 0000000..7be66d9 --- /dev/null +++ b/src/event_entry.hpp @@ -0,0 +1,62 @@ +#pragma once + +#include "sdbusplus.hpp" +#include "xyz/openbmc_project/Logging/Event/server.hpp" + +#include +#include + +namespace phosphor +{ +namespace events +{ + +using namespace phosphor::dbus::monitoring; + +using EntryIface = sdbusplus::server::object::object < + 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(), true), + objectPath(path) + { + timestamp(eventTimestamp); + message(msg); + additionalData(metaData); + // Emit deferred signal. + this->emit_object_added(); + } + + /** @brief Path of Object. */ + std::string objectPath; + +}; + +} // namespace events +} // namespace phosphor -- cgit v1.2.1