blob: 71848521030a2661359b4c5e75b6007200648761 [file] [log] [blame]
Ratan Guptacd227862017-10-06 21:27:13 +05301#pragma once
2
Ratan Gupta3e84ec62017-10-06 21:37:01 +05303#include "event_entry.hpp"
4
5#include <map>
6#include <memory>
7#include <queue>
Ratan Guptacd227862017-10-06 21:27:13 +05308#include <sdbusplus/bus.hpp>
9
10namespace phosphor
11{
12namespace events
13{
14
15/** @class Manager
16 * @brief OpenBMC Event manager implementation.
17 */
18class 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.
Ratan Gupta3e84ec62017-10-06 21:37:01 +053032 * @param[in] eventMessage - Message for the event.
Ratan Guptacd227862017-10-06 21:27:13 +053033 * @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,
Ratan Gupta3e84ec62017-10-06 21:37:01 +053039 const std::string& eventMessage,
Ratan Guptacd227862017-10-06 21:27:13 +053040 const std::string& objectPath,
41 const std::string& propertyName,
42 const std::string& propertyValue);
43
Ratan Gupta3e84ec62017-10-06 21:37:01 +053044 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;
Ratan Guptacd227862017-10-06 21:27:13 +053052};
53
54Manager& getManager();
55
56} // namespace events
57} // namespace phosphor