blob: c114000ac535b65faffd0facdbebc3f980938ebf [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>
Andrew Geisslerae4c95c2020-05-16 13:58:53 -05009#include <string>
Ratan Guptacd227862017-10-06 21:27:13 +053010
11namespace phosphor
12{
13namespace events
14{
15
16/** @class Manager
17 * @brief OpenBMC Event manager implementation.
18 */
19class Manager
20{
Brad Bishopd1eac882018-03-29 10:34:05 -040021 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;
Ratan Guptacd227862017-10-06 21:27:13 +053028
Brad Bishopd1eac882018-03-29 10:34:05 -040029 /** @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);
Ratan Guptacd227862017-10-06 21:27:13 +053041
Dhruvaraj Subhashchandran6524b9d2017-10-18 01:41:51 -050042 /** @brief Construct event d-bus objects from their persisted
43 * representations.
44 */
45 void restore();
46
Brad Bishopd1eac882018-03-29 10:34:05 -040047 private:
48 using EventName = std::string;
49 /** @brief Queue of events */
50 using EventQueue = std::queue<std::unique_ptr<Entry>>;
Ratan Gupta3e84ec62017-10-06 21:37:01 +053051
Brad Bishopd1eac882018-03-29 10:34:05 -040052 using EventMap = std::map<EventName, EventQueue>;
53 /** @brief Map of event name and the list of events **/
54 EventMap eventMap;
Ratan Guptacd227862017-10-06 21:27:13 +053055};
56
57Manager& getManager();
58
59} // namespace events
60} // namespace phosphor