1#ifndef ANDROID_PDX_UDS_CLIENT_CHANNEL_FACTORY_H_
2#define ANDROID_PDX_UDS_CLIENT_CHANNEL_FACTORY_H_
3
4#include <string>
5
6#include <pdx/client_channel_factory.h>
7
8namespace android {
9namespace pdx {
10namespace uds {
11
12class ClientChannelFactory : public pdx::ClientChannelFactory {
13 public:
14  static std::unique_ptr<pdx::ClientChannelFactory> Create(
15      const std::string& endpoint_path);
16  static std::unique_ptr<pdx::ClientChannelFactory> Create(LocalHandle socket);
17
18  Status<std::unique_ptr<pdx::ClientChannel>> Connect(
19      int64_t timeout_ms) const override;
20
21  static std::string GetRootEndpointPath();
22  static std::string GetEndpointPath(const std::string& endpoint_path);
23
24 private:
25  explicit ClientChannelFactory(const std::string& endpoint_path);
26  explicit ClientChannelFactory(LocalHandle socket);
27
28  mutable LocalHandle socket_;
29  std::string endpoint_path_;
30};
31
32}  // namespace uds
33}  // namespace pdx
34}  // namespace android
35
36#endif  // ANDROID_PDX_UDS_CLIENT_CHANNEL_FACTORY_H_
37