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( 38 const std::string& eventName, 39 const std::string& eventMessage, 40 const std::string& objectPath, 41 const std::string& propertyName, 42 const std::string& propertyValue); 43 44 private: 45 using EventName = std::string; 46 /** @brief Queue of events */ 47 using EventQueue = std::queue<std::unique_ptr<Entry>>; 48 49 using EventMap = std::map<EventName, EventQueue>; 50 /** @brief Map of event name and the list of events **/ 51 EventMap eventMap; 52 }; 53 54 Manager& getManager(); 55 56 } // namespace events 57 } // namespace phosphor 58