blob: a177739940b8507993d0a3b7887ca8d0c3cab53b [file] [log] [blame]
#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