| #pragma once |
| |
| #include "event_entry.hpp" |
| |
| #include <map> |
| #include <memory> |
| #include <queue> |
| #include <sdbusplus/bus.hpp> |
| |
| namespace phosphor |
| { |
| namespace events |
| { |
| |
| /** @class Manager |
| * @brief OpenBMC Event manager implementation. |
| */ |
| class Manager |
| { |
| public: |
| Manager() = default; |
| Manager(const Manager&) = delete; |
| Manager& operator=(const Manager&) = delete; |
| Manager(Manager&&) = default; |
| Manager& operator=(Manager&&) = default; |
| virtual ~Manager() = default; |
| |
| /** @brief Create the D-Bus Event object. |
| * @detail Add the objectPath,propertyName, propertyValue |
| * as additional data of the event object. |
| * @param[in] eventName - Name of the event. |
| * @param[in] eventMessage - Message for the event. |
| * @param[in] objectPath - Path of the D-Bus object. |
| * @param[in] propertyName - Name of the property. |
| * @param[in] propertyValue - Value of the property. |
| */ |
| void create(const std::string& eventName, const std::string& eventMessage, |
| const std::string& objectPath, const std::string& propertyName, |
| const std::string& propertyValue); |
| |
| private: |
| using EventName = std::string; |
| /** @brief Queue of events */ |
| using EventQueue = std::queue<std::unique_ptr<Entry>>; |
| |
| using EventMap = std::map<EventName, EventQueue>; |
| /** @brief Map of event name and the list of events **/ |
| EventMap eventMap; |
| }; |
| |
| Manager& getManager(); |
| |
| } // namespace events |
| } // namespace phosphor |