diff options
author | James Antill <james@and.org> | 2014-07-25 02:10:53 -0400 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2014-07-28 08:37:15 -0400 |
commit | 43bba232a0af7b7dfef1eb2c6c6637dcba41e1d3 (patch) | |
tree | f5beec1e7282bd943a7c8a33319590cb5ec18a63 | |
parent | 249da7aef20d9a4ec0b2cb04ad2a9184974f7e4d (diff) | |
download | ostree-43bba232a0af7b7dfef1eb2c6c6637dcba41e1d3.tar.gz |
Display bytes/second during pull
Add start time to the AsyncProgress object, use it in the common
progress.
-rw-r--r-- | src/libostree/ostree-fetcher.c | 1 | ||||
-rw-r--r-- | src/libostree/ostree-repo-pull.c | 9 | ||||
-rw-r--r-- | src/ostree/ot-builtins-common.c | 14 |
3 files changed, 19 insertions, 5 deletions
diff --git a/src/libostree/ostree-fetcher.c b/src/libostree/ostree-fetcher.c index a049e0f4..0ea4d29d 100644 --- a/src/libostree/ostree-fetcher.c +++ b/src/libostree/ostree-fetcher.c @@ -140,6 +140,7 @@ on_request_started (SoupSession *session, gpointer user_data) { OstreeFetcher *self = user_data; + g_hash_table_insert (self->sending_messages, msg, g_object_ref (msg)); } diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index 2cdc6c15..51eb4d0c 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -65,6 +65,8 @@ typedef struct { guint n_fetched_metadata; guint n_fetched_content; + guint64 start_time; + gboolean have_previous_bytes; guint64 previous_bytes_sec; guint64 previous_total_downloaded; @@ -143,6 +145,7 @@ update_progress (gpointer user_data) guint fetched = pull_data->n_fetched_metadata + pull_data->n_fetched_content; guint requested = pull_data->n_requested_metadata + pull_data->n_requested_content; guint n_scanned_metadata = pull_data->n_scanned_metadata; + guint64 start_time = pull_data->start_time; g_assert (pull_data->progress); @@ -152,6 +155,7 @@ update_progress (gpointer user_data) ostree_async_progress_set_uint (pull_data->progress, "requested", requested); ostree_async_progress_set_uint (pull_data->progress, "scanned-metadata", n_scanned_metadata); ostree_async_progress_set_uint64 (pull_data->progress, "bytes-transferred", bytes_transferred); + ostree_async_progress_set_uint64 (pull_data->progress, "start-time", start_time); if (pull_data->fetching_sync_uri) { @@ -1039,7 +1043,6 @@ ostree_repo_pull (OstreeRepo *self, GKeyFile *remote_config = NULL; char **configured_branches = NULL; guint64 bytes_transferred; - guint64 start_time; guint64 end_time; pull_data->async_error = error; @@ -1057,7 +1060,7 @@ ostree_repo_pull (OstreeRepo *self, pull_data->requested_metadata = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, NULL); - start_time = g_get_monotonic_time (); + pull_data->start_time = g_get_monotonic_time (); pull_data->remote_name = g_strdup (remote_name); config = ostree_repo_get_config (self); @@ -1310,7 +1313,7 @@ ostree_repo_pull (OstreeRepo *self, pull_data->n_fetched_metadata, pull_data->n_fetched_content, (guint64)(bytes_transferred / shift), shift == 1 ? "B" : "KiB", - (guint) ((end_time - start_time) / G_USEC_PER_SEC)); + (guint) ((end_time - pull_data->start_time) / G_USEC_PER_SEC)); ostree_async_progress_set_status (pull_data->progress, msg); } diff --git a/src/ostree/ot-builtins-common.c b/src/ostree/ot-builtins-common.c index 8de6b604..5e3e4e64 100644 --- a/src/ostree/ot-builtins-common.c +++ b/src/ostree/ot-builtins-common.c @@ -52,12 +52,22 @@ ot_common_pull_progress (OstreeAsyncProgress *progress, guint64 bytes_transferred = ostree_async_progress_get_uint64 (progress, "bytes-transferred"); guint fetched = ostree_async_progress_get_uint (progress, "fetched"); guint requested = ostree_async_progress_get_uint (progress, "requested"); + guint64 bytes_sec = (g_get_monotonic_time () - ostree_async_progress_get_uint64 (progress, "start-time")) / G_USEC_PER_SEC; gs_free char *formatted_bytes_transferred = g_format_size_full (bytes_transferred, 0); + gs_free char *formatted_bytes_sec = NULL; - g_string_append_printf (buf, "Receiving objects: %u%% (%u/%u) %s", + if (!bytes_sec) // Ignore first second + formatted_bytes_sec = g_strdup ("-"); + else + { + bytes_sec = bytes_transferred / bytes_sec; + formatted_bytes_sec = g_format_size (bytes_sec); + } + + g_string_append_printf (buf, "Receiving objects: %u%% (%u/%u) %s/s %s", (guint)((((double)fetched) / requested) * 100), - fetched, requested, formatted_bytes_transferred); + fetched, requested, formatted_bytes_sec, formatted_bytes_transferred); } else if (outstanding_writes) { |