1 #pragma once 2 3 #include "event_entry.hpp" 4 5 #include <map> 6 #include <memory> 7 #include <queue> 8 #include <sdbusplus/bus.hpp> 9 10 namespace phosphor 11 { 12 namespace events 13 { 14 15 /** @class Manager 16 * @brief OpenBMC Event manager implementation. 17 */ 18 class Manager 19 { 20 public: 21 Manager() = default; 22 Manager(const Manager&) = delete; 23 Manager& operator=(const Manager&) = delete; 24 Manager(Manager&&) = default; 25 Manager& operator=(Manager&&) = default; 26 virtual ~Manager() = default; 27 28 /** @brief Create the D-Bus Event object. 29 * @detail Add the objectPath,propertyName, propertyValue 30 * as additional data of the event object. 31 * @param[in] eventName - Name of the event. 32 * @param[in] eventMessage - Message for the event. 33 * @param[in] objectPath - Path of the D-Bus object. 34 * @param[in] propertyName - Name of the property. 35 * @param[in] propertyValue - Value of the property. 36 */ 37 void create(const std::string& eventName, const std::string& eventMessage, 38 const std::string& objectPath, const std::string& propertyName, 39 const std::string& propertyValue); 40 41 /** @brief Construct event d-bus objects from their persisted 42 * representations. 43 */ 44 void restore(); 45 46 private: 47 using EventName = std::string; 48 /** @brief Queue of events */ 49 using EventQueue = std::queue<std::unique_ptr<Entry>>; 50 51 using EventMap = std::map<EventName, EventQueue>; 52 /** @brief Map of event name and the list of events **/ 53 EventMap eventMap; 54 }; 55 56 Manager& getManager(); 57 58 } // namespace events 59 } // namespace phosphor 60