1 #ifndef ANDROID_PDX_UDS_CHANNEL_MANAGER_H_ 2 #define ANDROID_PDX_UDS_CHANNEL_MANAGER_H_ 3 4 #include <mutex> 5 #include <unordered_map> 6 7 #include <pdx/channel_handle.h> 8 #include <pdx/file_handle.h> 9 #include <uds/channel_event_set.h> 10 11 namespace android { 12 namespace pdx { 13 namespace uds { 14 15 class ChannelManager : public ChannelManagerInterface { 16 public: 17 static ChannelManager& Get(); 18 19 LocalChannelHandle CreateHandle(LocalHandle data_fd, 20 LocalHandle pollin_event_fd, 21 LocalHandle pollhup_event_fd); 22 23 ChannelEventReceiver* GetChannelData(int32_t handle); 24 25 private: 26 ChannelManager() = default; 27 28 void CloseHandle(int32_t handle) override; 29 30 std::mutex mutex_; 31 std::unordered_map<int32_t, ChannelEventReceiver> channels_; 32 }; 33 34 } // namespace uds 35 } // namespace pdx 36 } // namespace android 37 38 #endif // ANDROID_PDX_UDS_CHANNEL_MANAGER_H_ 39