Merge "[adb] file sync performance on Windows" into rvc-dev
This commit is contained in:
commit
34fdb226f5
1 changed files with 16 additions and 2 deletions
|
@ -53,6 +53,8 @@
|
|||
#include <android-base/strings.h>
|
||||
#include <android-base/stringprintf.h>
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
typedef void(sync_ls_cb)(unsigned mode, uint64_t size, uint64_t time, const char* name);
|
||||
|
||||
struct syncsendbuf {
|
||||
|
@ -112,8 +114,12 @@ struct TransferLedger {
|
|||
uint64_t bytes_transferred;
|
||||
uint64_t bytes_expected;
|
||||
bool expect_multiple_files;
|
||||
std::string last_progress_str;
|
||||
|
||||
private:
|
||||
std::string last_progress_str;
|
||||
std::chrono::steady_clock::time_point last_progress_time;
|
||||
|
||||
public:
|
||||
TransferLedger() {
|
||||
Reset();
|
||||
}
|
||||
|
@ -128,12 +134,13 @@ struct TransferLedger {
|
|||
}
|
||||
|
||||
void Reset() {
|
||||
last_progress_str.clear();
|
||||
start_time = std::chrono::steady_clock::now();
|
||||
files_transferred = 0;
|
||||
files_skipped = 0;
|
||||
bytes_transferred = 0;
|
||||
bytes_expected = 0;
|
||||
last_progress_str.clear();
|
||||
last_progress_time = {};
|
||||
}
|
||||
|
||||
std::string TransferRate() {
|
||||
|
@ -153,6 +160,12 @@ struct TransferLedger {
|
|||
|
||||
void ReportProgress(LinePrinter& lp, const std::string& file, uint64_t file_copied_bytes,
|
||||
uint64_t file_total_bytes) {
|
||||
static constexpr auto kProgressReportInterval = 100ms;
|
||||
|
||||
auto now = std::chrono::steady_clock::now();
|
||||
if (now < last_progress_time + kProgressReportInterval) {
|
||||
return;
|
||||
}
|
||||
char overall_percentage_str[5] = "?";
|
||||
if (bytes_expected != 0 && bytes_transferred <= bytes_expected) {
|
||||
int overall_percentage = static_cast<int>(bytes_transferred * 100 / bytes_expected);
|
||||
|
@ -186,6 +199,7 @@ struct TransferLedger {
|
|||
if (output != last_progress_str) {
|
||||
lp.Print(output, LinePrinter::LineType::INFO);
|
||||
last_progress_str = std::move(output);
|
||||
last_progress_time = now;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue