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 11namespace android { 12namespace pdx { 13namespace uds { 14 15class 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