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