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