Files
clang-p2996/lldb/source/Plugins/Platform/Android/AdbClient.h
Kate Stone b9c1b51e45 *** This commit represents a complete reformatting of the LLDB source code
*** to conform to clang-format’s LLVM style.  This kind of mass change has
*** two obvious implications:

Firstly, merging this particular commit into a downstream fork may be a huge
effort.  Alternatively, it may be worth merging all changes up to this commit,
performing the same reformatting operation locally, and then discarding the
merge for this particular commit.  The commands used to accomplish this
reformatting were as follows (with current working directory as the root of
the repository):

    find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} +
    find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ;

The version of clang-format used was 3.9.0, and autopep8 was 1.2.4.

Secondly, “blame” style tools will generally point to this commit instead of
a meaningful prior commit.  There are alternatives available that will attempt
to look through this change and find the appropriate prior commit.  YMMV.

llvm-svn: 280751
2016-09-06 20:57:50 +00:00

147 lines
3.7 KiB
C++

//===-- AdbClient.h ---------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_AdbClient_h_
#define liblldb_AdbClient_h_
// C Includes
// C++ Includes
#include <functional>
#include <list>
#include <memory>
#include <string>
#include <vector>
// Other libraries and framework includes
// Project includes
#include "lldb/Core/Error.h"
namespace lldb_private {
class FileSpec;
namespace platform_android {
class AdbClient {
public:
enum UnixSocketNamespace {
UnixSocketNamespaceAbstract,
UnixSocketNamespaceFileSystem,
};
using DeviceIDList = std::list<std::string>;
class SyncService {
friend class AdbClient;
public:
~SyncService();
Error PullFile(const FileSpec &remote_file, const FileSpec &local_file);
Error PushFile(const FileSpec &local_file, const FileSpec &remote_file);
Error Stat(const FileSpec &remote_file, uint32_t &mode, uint32_t &size,
uint32_t &mtime);
bool IsConnected() const;
private:
explicit SyncService(std::unique_ptr<Connection> &&conn);
Error SendSyncRequest(const char *request_id, const uint32_t data_len,
const void *data);
Error ReadSyncHeader(std::string &response_id, uint32_t &data_len);
Error PullFileChunk(std::vector<char> &buffer, bool &eof);
Error ReadAllBytes(void *buffer, size_t size);
Error internalPullFile(const FileSpec &remote_file,
const FileSpec &local_file);
Error internalPushFile(const FileSpec &local_file,
const FileSpec &remote_file);
Error internalStat(const FileSpec &remote_file, uint32_t &mode,
uint32_t &size, uint32_t &mtime);
Error executeCommand(const std::function<Error()> &cmd);
std::unique_ptr<Connection> m_conn;
};
static Error CreateByDeviceID(const std::string &device_id, AdbClient &adb);
AdbClient();
explicit AdbClient(const std::string &device_id);
~AdbClient();
const std::string &GetDeviceID() const;
Error GetDevices(DeviceIDList &device_list);
Error SetPortForwarding(const uint16_t local_port,
const uint16_t remote_port);
Error SetPortForwarding(const uint16_t local_port,
const char *remote_socket_name,
const UnixSocketNamespace socket_namespace);
Error DeletePortForwarding(const uint16_t local_port);
Error Shell(const char *command, uint32_t timeout_ms, std::string *output);
Error ShellToFile(const char *command, uint32_t timeout_ms,
const FileSpec &output_file_spec);
std::unique_ptr<SyncService> GetSyncService(Error &error);
Error SwitchDeviceTransport();
private:
Error Connect();
void SetDeviceID(const std::string &device_id);
Error SendMessage(const std::string &packet, const bool reconnect = true);
Error SendDeviceMessage(const std::string &packet);
Error ReadMessage(std::vector<char> &message);
Error ReadMessageStream(std::vector<char> &message, uint32_t timeout_ms);
Error GetResponseError(const char *response_id);
Error ReadResponseStatus();
Error Sync();
Error StartSync();
Error internalShell(const char *command, uint32_t timeout_ms,
std::vector<char> &output_buf);
Error ReadAllBytes(void *buffer, size_t size);
std::string m_device_id;
std::unique_ptr<Connection> m_conn;
};
} // namespace platform_android
} // namespace lldb_private
#endif // liblldb_AdbClient_h_