From 818dd516dae0f6f68da1e8ad5f1d3d468f50123c Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Thu, 24 Nov 2016 14:03:57 +0000 Subject: [PATCH] Use chrono in AdbClient This refactors the class implementations to use chrono. I'll follow this up with a refactor of the class interface. llvm-svn: 287879 --- lldb/source/Plugins/Platform/Android/AdbClient.cpp | 33 ++++++++++------------ lldb/source/Plugins/Platform/Android/AdbClient.h | 15 +++------- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/lldb/source/Plugins/Platform/Android/AdbClient.cpp b/lldb/source/Plugins/Platform/Android/AdbClient.cpp index fbf6dee..d9e27d9 100644 --- a/lldb/source/Plugins/Platform/Android/AdbClient.cpp +++ b/lldb/source/Plugins/Platform/Android/AdbClient.cpp @@ -41,10 +41,11 @@ using namespace lldb; using namespace lldb_private; using namespace lldb_private::platform_android; +using namespace std::chrono; namespace { -const std::chrono::seconds kReadTimeout(8); +const seconds kReadTimeout(8); const char *kOKAY = "OKAY"; const char *kFAIL = "FAIL"; const char *kDATA = "DATA"; @@ -64,7 +65,6 @@ const char *kSocketNamespaceAbstract = "localabstract"; const char *kSocketNamespaceFileSystem = "localfilesystem"; Error ReadAllBytes(Connection &conn, void *buffer, size_t size) { - using namespace std::chrono; Error error; ConnectionStatus status; @@ -263,23 +263,22 @@ Error AdbClient::ReadMessage(std::vector &message) { } Error AdbClient::ReadMessageStream(std::vector &message, - uint32_t timeout_ms) { - auto start = std::chrono::steady_clock::now(); + milliseconds timeout) { + auto start = steady_clock::now(); message.clear(); Error error; lldb::ConnectionStatus status = lldb::eConnectionStatusSuccess; char buffer[1024]; while (error.Success() && status == lldb::eConnectionStatusSuccess) { - auto end = std::chrono::steady_clock::now(); - uint32_t elapsed_time = - std::chrono::duration_cast(end - start) - .count(); - if (elapsed_time >= timeout_ms) + auto end = steady_clock::now(); + auto elapsed = end - start; + if (elapsed >= timeout) return Error("Timed out"); - size_t n = m_conn->Read(buffer, sizeof(buffer), - 1000 * (timeout_ms - elapsed_time), status, &error); + size_t n = m_conn->Read( + buffer, sizeof(buffer), + duration_cast(timeout - elapsed).count(), status, &error); if (n > 0) message.insert(message.end(), &buffer[0], &buffer[n]); } @@ -350,7 +349,7 @@ Error AdbClient::ReadAllBytes(void *buffer, size_t size) { return ::ReadAllBytes(*m_conn, buffer, size); } -Error AdbClient::internalShell(const char *command, uint32_t timeout_ms, +Error AdbClient::internalShell(const char *command, milliseconds timeout, std::vector &output_buf) { output_buf.clear(); @@ -368,7 +367,7 @@ Error AdbClient::internalShell(const char *command, uint32_t timeout_ms, if (error.Fail()) return error; - error = ReadMessageStream(output_buf, timeout_ms); + error = ReadMessageStream(output_buf, timeout); if (error.Fail()) return error; @@ -387,7 +386,7 @@ Error AdbClient::internalShell(const char *command, uint32_t timeout_ms, Error AdbClient::Shell(const char *command, uint32_t timeout_ms, std::string *output) { std::vector output_buffer; - auto error = internalShell(command, timeout_ms, output_buffer); + auto error = internalShell(command, milliseconds(timeout_ms), output_buffer); if (error.Fail()) return error; @@ -399,7 +398,7 @@ Error AdbClient::Shell(const char *command, uint32_t timeout_ms, Error AdbClient::ShellToFile(const char *command, uint32_t timeout_ms, const FileSpec &output_file_spec) { std::vector output_buffer; - auto error = internalShell(command, timeout_ms, output_buffer); + auto error = internalShell(command, milliseconds(timeout_ms), output_buffer); if (error.Fail()) return error; @@ -477,9 +476,7 @@ Error AdbClient::SyncService::internalPushFile(const FileSpec &local_file, return Error("Failed to send file chunk: %s", error.AsCString()); } error = SendSyncRequest( - kDONE, std::chrono::duration_cast( - FileSystem::GetModificationTime(local_file).time_since_epoch()) - .count(), + kDONE, llvm::sys::toTimeT(FileSystem::GetModificationTime(local_file)), nullptr); if (error.Fail()) return error; diff --git a/lldb/source/Plugins/Platform/Android/AdbClient.h b/lldb/source/Plugins/Platform/Android/AdbClient.h index 56bb04e..f1d72aa 100644 --- a/lldb/source/Plugins/Platform/Android/AdbClient.h +++ b/lldb/source/Plugins/Platform/Android/AdbClient.h @@ -10,21 +10,14 @@ #ifndef liblldb_AdbClient_h_ #define liblldb_AdbClient_h_ -// C Includes - -// C++ Includes - +#include "lldb/Core/Error.h" +#include #include #include #include #include #include -// Other libraries and framework includes -// Project includes - -#include "lldb/Core/Error.h" - namespace lldb_private { class FileSpec; @@ -121,7 +114,7 @@ private: Error ReadMessage(std::vector &message); - Error ReadMessageStream(std::vector &message, uint32_t timeout_ms); + Error ReadMessageStream(std::vector &message, std::chrono::milliseconds timeout); Error GetResponseError(const char *response_id); @@ -131,7 +124,7 @@ private: Error StartSync(); - Error internalShell(const char *command, uint32_t timeout_ms, + Error internalShell(const char *command, std::chrono::milliseconds timeout, std::vector &output_buf); Error ReadAllBytes(void *buffer, size_t size); -- 2.7.4