xref: /openbmc/dbus-sensors/src/cable-monitor/CableEvents.hpp (revision ca8c7e98687da407fbab5dcd20cfe892928928ae)
1*ca8c7e98SJagpal Singh Gill #pragma once
2*ca8c7e98SJagpal Singh Gill 
3*ca8c7e98SJagpal Singh Gill #include <sdbusplus/async.hpp>
4*ca8c7e98SJagpal Singh Gill #include <sdbusplus/message/native_types.hpp>
5*ca8c7e98SJagpal Singh Gill 
6*ca8c7e98SJagpal Singh Gill #include <string>
7*ca8c7e98SJagpal Singh Gill #include <unordered_map>
8*ca8c7e98SJagpal Singh Gill 
9*ca8c7e98SJagpal Singh Gill namespace cable
10*ca8c7e98SJagpal Singh Gill {
11*ca8c7e98SJagpal Singh Gill 
12*ca8c7e98SJagpal Singh Gill class Events
13*ca8c7e98SJagpal Singh Gill {
14*ca8c7e98SJagpal Singh Gill   public:
15*ca8c7e98SJagpal Singh Gill     /** @brief Event type */
16*ca8c7e98SJagpal Singh Gill     enum class Type
17*ca8c7e98SJagpal Singh Gill     {
18*ca8c7e98SJagpal Singh Gill         connected,
19*ca8c7e98SJagpal Singh Gill         disconnected,
20*ca8c7e98SJagpal Singh Gill         unknown
21*ca8c7e98SJagpal Singh Gill     };
22*ca8c7e98SJagpal Singh Gill 
23*ca8c7e98SJagpal Singh Gill     Events() = delete;
Events(sdbusplus::async::context & ctx)24*ca8c7e98SJagpal Singh Gill     explicit Events(sdbusplus::async::context& ctx) : ctx(ctx) {}
25*ca8c7e98SJagpal Singh Gill 
26*ca8c7e98SJagpal Singh Gill     /** @brief Generate a cable event */
27*ca8c7e98SJagpal Singh Gill     auto generateCableEvent(Type type, std::string name)
28*ca8c7e98SJagpal Singh Gill         -> sdbusplus::async::task<>;
29*ca8c7e98SJagpal Singh Gill 
30*ca8c7e98SJagpal Singh Gill   private:
31*ca8c7e98SJagpal Singh Gill     /** @brief Map type for event name to log event object path */
32*ca8c7e98SJagpal Singh Gill     using event_map_t =
33*ca8c7e98SJagpal Singh Gill         std::unordered_map<std::string, sdbusplus::message::object_path>;
34*ca8c7e98SJagpal Singh Gill 
35*ca8c7e98SJagpal Singh Gill     sdbusplus::async::context& ctx;
36*ca8c7e98SJagpal Singh Gill     event_map_t pendingEvents;
37*ca8c7e98SJagpal Singh Gill };
38*ca8c7e98SJagpal Singh Gill 
39*ca8c7e98SJagpal Singh Gill } // namespace cable
40