diff options
Diffstat (limited to 'lldb/source/Plugins/Platform/Android/AdbClient.cpp')
| -rw-r--r-- | lldb/source/Plugins/Platform/Android/AdbClient.cpp | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/lldb/source/Plugins/Platform/Android/AdbClient.cpp b/lldb/source/Plugins/Platform/Android/AdbClient.cpp index fbf6dee87bf..d9e27d94f74 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<char> &message) { } Error AdbClient::ReadMessageStream(std::vector<char> &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<std::chrono::milliseconds>(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<microseconds>(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<char> &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<char> 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<char> 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<std::chrono::seconds>( - FileSystem::GetModificationTime(local_file).time_since_epoch()) - .count(), + kDONE, llvm::sys::toTimeT(FileSystem::GetModificationTime(local_file)), nullptr); if (error.Fail()) return error; |

