xref: /openbmc/phosphor-dbus-monitor/src/event_entry.hpp (revision 3e84ec6645bcea669805947f1409b58b4b0d9f72)
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