blob: e8d3f6ed37a4e357d01418fd971af3a9a64e1e4f [file] [log] [blame]
#ifndef ANDROID_PDX_UDS_CHANNEL_MANAGER_H_
#define ANDROID_PDX_UDS_CHANNEL_MANAGER_H_
#include <mutex>
#include <unordered_map>
#include <pdx/channel_handle.h>
#include <pdx/file_handle.h>
namespace android {
namespace pdx {
namespace uds {
class ChannelManager : public ChannelManagerInterface {
public:
static ChannelManager& Get();
LocalChannelHandle CreateHandle(LocalHandle data_fd, LocalHandle event_fd);
int GetEventFd(int32_t handle);
private:
struct ChannelData {
LocalHandle data_fd;
LocalHandle event_fd;
};
ChannelManager() = default;
void CloseHandle(int32_t handle) override;
std::mutex mutex_;
std::unordered_map<int32_t, ChannelData> channels_;
};
} // namespace uds
} // namespace pdx
} // namespace android
#endif // ANDROID_PDX_UDS_CHANNEL_MANAGER_H_