1cd22786aSRatan Gupta #pragma once 2cd22786aSRatan Gupta 33e84ec66SRatan Gupta #include "event_entry.hpp" 43e84ec66SRatan Gupta 5*3fe976ccSGeorge Liu #include <sdbusplus/bus.hpp> 6*3fe976ccSGeorge Liu 73e84ec66SRatan Gupta #include <map> 83e84ec66SRatan Gupta #include <memory> 93e84ec66SRatan Gupta #include <queue> 10ae4c95c6SAndrew Geissler #include <string> 11cd22786aSRatan Gupta 12cd22786aSRatan Gupta namespace phosphor 13cd22786aSRatan Gupta { 14cd22786aSRatan Gupta namespace events 15cd22786aSRatan Gupta { 16cd22786aSRatan Gupta 17cd22786aSRatan Gupta /** @class Manager 18cd22786aSRatan Gupta * @brief OpenBMC Event manager implementation. 19cd22786aSRatan Gupta */ 20cd22786aSRatan Gupta class Manager 21cd22786aSRatan Gupta { 22cd22786aSRatan Gupta public: 23cd22786aSRatan Gupta Manager() = default; 24cd22786aSRatan Gupta Manager(const Manager&) = delete; 25cd22786aSRatan Gupta Manager& operator=(const Manager&) = delete; 26cd22786aSRatan Gupta Manager(Manager&&) = default; 27cd22786aSRatan Gupta Manager& operator=(Manager&&) = default; 28cd22786aSRatan Gupta virtual ~Manager() = default; 29cd22786aSRatan Gupta 30cd22786aSRatan Gupta /** @brief Create the D-Bus Event object. 31cd22786aSRatan Gupta * @detail Add the objectPath,propertyName, propertyValue 32cd22786aSRatan Gupta * as additional data of the event object. 33cd22786aSRatan Gupta * @param[in] eventName - Name of the event. 343e84ec66SRatan Gupta * @param[in] eventMessage - Message for the event. 35cd22786aSRatan Gupta * @param[in] objectPath - Path of the D-Bus object. 36cd22786aSRatan Gupta * @param[in] propertyName - Name of the property. 37cd22786aSRatan Gupta * @param[in] propertyValue - Value of the property. 38cd22786aSRatan Gupta */ 39d1eac88dSBrad Bishop void create(const std::string& eventName, const std::string& eventMessage, 40d1eac88dSBrad Bishop const std::string& objectPath, const std::string& propertyName, 41cd22786aSRatan Gupta const std::string& propertyValue); 42cd22786aSRatan Gupta 436524b9d8SDhruvaraj Subhashchandran /** @brief Construct event d-bus objects from their persisted 446524b9d8SDhruvaraj Subhashchandran * representations. 456524b9d8SDhruvaraj Subhashchandran */ 466524b9d8SDhruvaraj Subhashchandran void restore(); 476524b9d8SDhruvaraj Subhashchandran 483e84ec66SRatan Gupta private: 493e84ec66SRatan Gupta using EventName = std::string; 503e84ec66SRatan Gupta /** @brief Queue of events */ 513e84ec66SRatan Gupta using EventQueue = std::queue<std::unique_ptr<Entry>>; 523e84ec66SRatan Gupta 533e84ec66SRatan Gupta using EventMap = std::map<EventName, EventQueue>; 543e84ec66SRatan Gupta /** @brief Map of event name and the list of events **/ 553e84ec66SRatan Gupta EventMap eventMap; 56cd22786aSRatan Gupta }; 57cd22786aSRatan Gupta 58cd22786aSRatan Gupta Manager& getManager(); 59cd22786aSRatan Gupta 60cd22786aSRatan Gupta } // namespace events 61cd22786aSRatan Gupta } // namespace phosphor 62