1*3e84ec66SRatan Gupta #pragma once 2*3e84ec66SRatan Gupta 3*3e84ec66SRatan Gupta #include "sdbusplus.hpp" 4*3e84ec66SRatan Gupta #include "xyz/openbmc_project/Logging/Event/server.hpp" 5*3e84ec66SRatan Gupta 6*3e84ec66SRatan Gupta #include <sdbusplus/bus.hpp> 7*3e84ec66SRatan Gupta #include <sdbusplus/server/object.hpp> 8*3e84ec66SRatan Gupta 9*3e84ec66SRatan Gupta namespace phosphor 10*3e84ec66SRatan Gupta { 11*3e84ec66SRatan Gupta namespace events 12*3e84ec66SRatan Gupta { 13*3e84ec66SRatan Gupta 14*3e84ec66SRatan Gupta using namespace phosphor::dbus::monitoring; 15*3e84ec66SRatan Gupta 16*3e84ec66SRatan Gupta using EntryIface = sdbusplus::server::object::object < 17*3e84ec66SRatan Gupta sdbusplus::xyz::openbmc_project::Logging::server::Event >; 18*3e84ec66SRatan Gupta 19*3e84ec66SRatan Gupta /** @class Entry 20*3e84ec66SRatan Gupta * @brief OpenBMC Event entry implementation. 21*3e84ec66SRatan Gupta * @details A concrete implementation for the 22*3e84ec66SRatan Gupta * xyz.openbmc_project.Event.Entry. 23*3e84ec66SRatan Gupta */ 24*3e84ec66SRatan Gupta class Entry : public EntryIface 25*3e84ec66SRatan Gupta { 26*3e84ec66SRatan Gupta public: 27*3e84ec66SRatan Gupta Entry() = delete; 28*3e84ec66SRatan Gupta Entry(const Entry&) = delete; 29*3e84ec66SRatan Gupta Entry& operator=(const Entry&) = delete; 30*3e84ec66SRatan Gupta Entry(Entry&&) = delete; 31*3e84ec66SRatan Gupta Entry& operator=(Entry&&) = delete; 32*3e84ec66SRatan Gupta virtual ~Entry() = default; 33*3e84ec66SRatan Gupta 34*3e84ec66SRatan Gupta /** @brief Constructor to put object onto bus at a dbus path. 35*3e84ec66SRatan Gupta * @param[in] path - Path to attach at. 36*3e84ec66SRatan Gupta * @param[in] eventId - The event entry id. 37*3e84ec66SRatan Gupta * @param[in] timestamp - timestamp when the event created. 38*3e84ec66SRatan Gupta * @param[in] msg - The message of the event. 39*3e84ec66SRatan Gupta * @param[in] metaData - The event metadata. 40*3e84ec66SRatan Gupta */ 41*3e84ec66SRatan Gupta Entry( 42*3e84ec66SRatan Gupta const std::string& path, 43*3e84ec66SRatan Gupta uint64_t eventTimestamp, 44*3e84ec66SRatan Gupta std::string&& msg, 45*3e84ec66SRatan Gupta std::vector<std::string>&& metaData) : 46*3e84ec66SRatan Gupta EntryIface(SDBusPlus::getBus(), path.c_str(), true), 47*3e84ec66SRatan Gupta objectPath(path) 48*3e84ec66SRatan Gupta { 49*3e84ec66SRatan Gupta timestamp(eventTimestamp); 50*3e84ec66SRatan Gupta message(msg); 51*3e84ec66SRatan Gupta additionalData(metaData); 52*3e84ec66SRatan Gupta // Emit deferred signal. 53*3e84ec66SRatan Gupta this->emit_object_added(); 54*3e84ec66SRatan Gupta } 55*3e84ec66SRatan Gupta 56*3e84ec66SRatan Gupta /** @brief Path of Object. */ 57*3e84ec66SRatan Gupta std::string objectPath; 58*3e84ec66SRatan Gupta 59*3e84ec66SRatan Gupta }; 60*3e84ec66SRatan Gupta 61*3e84ec66SRatan Gupta } // namespace events 62*3e84ec66SRatan Gupta } // namespace phosphor 63