Home | History | Annotate | Download | only in uds
      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