1 //===-- AdbClient.h ---------------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_AdbClient_h_
11 #define liblldb_AdbClient_h_
21 // Other libraries and framework includes
24 #include "lldb/Core/Error.h"
25 #include "lldb/Host/ConnectionFileDescriptor.h"
27 namespace lldb_private {
31 namespace platform_android {
36 enum UnixSocketNamespace
38 UnixSocketNamespaceAbstract,
39 UnixSocketNamespaceFileSystem,
42 using DeviceIDList = std::list<std::string>;
45 CreateByDeviceID(const std::string &device_id, AdbClient &adb);
47 AdbClient () = default;
48 explicit AdbClient (const std::string &device_id);
54 GetDevices (DeviceIDList &device_list);
57 SetPortForwarding (const uint16_t local_port, const uint16_t remote_port);
60 SetPortForwarding (const uint16_t local_port,
61 const char* remote_socket_name,
62 const UnixSocketNamespace socket_namespace);
65 DeletePortForwarding (const uint16_t local_port);
68 PullFile (const FileSpec &remote_file, const FileSpec &local_file);
71 PushFile (const FileSpec &local_file, const FileSpec &remote_file);
74 Stat (const FileSpec &remote_file, uint32_t &mode, uint32_t &size, uint32_t &mtime);
77 Shell (const char* command, uint32_t timeout_ms, std::string* output);
84 SetDeviceID (const std::string &device_id);
87 SendMessage (const std::string &packet, const bool reconnect = true);
90 SendDeviceMessage (const std::string &packet);
93 SendSyncRequest (const char *request_id, const uint32_t data_len, const void *data);
96 ReadSyncHeader (std::string &response_id, uint32_t &data_len);
99 ReadMessage (std::vector<char> &message);
102 ReadMessageStream (std::vector<char> &message, uint32_t timeout_ms);
105 GetResponseError (const char *response_id);
108 ReadResponseStatus ();
111 SwitchDeviceTransport ();
120 PullFileChunk (std::vector<char> &buffer, bool &eof);
123 ReadAllBytes (void *buffer, size_t size);
125 std::string m_device_id;
126 ConnectionFileDescriptor m_conn;
129 } // namespace platform_android
130 } // namespace lldb_private
132 #endif // liblldb_AdbClient_h_