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