[ostree] Add ostree_repo_pull_default_console_progress_changed()
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] Add ostree_repo_pull_default_console_progress_changed()
- Date: Fri, 19 Dec 2014 02:33:16 +0000 (UTC)
commit 880328ba03c7aa09d55e0b193150e4409d4c98d7
Author: Matthew Barnes <mbarnes redhat com>
Date: Thu Dec 18 10:06:47 2014 -0500
Add ostree_repo_pull_default_console_progress_changed()
Replaces ot_common_pull_progress() in ostree binary, so it can be shared
with rpm-ostree.
Makefile-ostree.am | 2 -
doc/ostree-sections.txt | 1 +
src/libostree/ostree-repo.c | 74 ++++++++++++++++++++++++++++
src/libostree/ostree-repo.h | 3 +
src/ostree/ot-admin-builtin-switch.c | 3 +-
src/ostree/ot-admin-builtin-upgrade.c | 3 +-
src/ostree/ot-builtin-pull.c | 3 +-
src/ostree/ot-builtins-common.c | 86 ---------------------------------
src/ostree/ot-builtins-common.h | 27 ----------
9 files changed, 81 insertions(+), 121 deletions(-)
---
diff --git a/Makefile-ostree.am b/Makefile-ostree.am
index 86ee144..dc7e83c 100644
--- a/Makefile-ostree.am
+++ b/Makefile-ostree.am
@@ -20,8 +20,6 @@
bin_PROGRAMS += ostree
ostree_SOURCES = src/ostree/main.c \
- src/ostree/ot-builtins-common.h \
- src/ostree/ot-builtins-common.c \
src/ostree/ot-builtin-admin.c \
src/ostree/ot-builtins.h \
src/ostree/ot-builtin-cat.c \
diff --git a/doc/ostree-sections.txt b/doc/ostree-sections.txt
index 535220d..ceb1fa3 100644
--- a/doc/ostree-sections.txt
+++ b/doc/ostree-sections.txt
@@ -279,6 +279,7 @@ OstreeRepoPullFlags
ostree_repo_pull
ostree_repo_pull_one_dir
ostree_repo_pull_with_options
+ostree_repo_pull_default_console_progress_changed
ostree_repo_sign_commit
ostree_repo_append_gpg_signature
ostree_repo_verify_commit
diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c
index 9d58122..38471a6 100644
--- a/src/libostree/ostree-repo.c
+++ b/src/libostree/ostree-repo.c
@@ -2734,6 +2734,80 @@ ostree_repo_pull_with_options (OstreeRepo *self,
#endif
/**
+ * ostree_repo_pull_default_console_progress_changed:
+ * @progress: Async progress
+ * @user_data: (allow-none): User data
+ *
+ * Convenient "changed" callback for use with
+ * ostree_async_progress_new_and_connect() when pulling from a remote
+ * repository.
+ *
+ * Depending on the state of the #OstreeAsyncProgress, either displays a
+ * custom status message, or else outstanding fetch progress in bytes/sec,
+ * or else outstanding content or metadata writes to the repository in
+ * number of objects.
+ **/
+void
+ostree_repo_pull_default_console_progress_changed (OstreeAsyncProgress *progress,
+ gpointer user_data)
+{
+ GSConsole *console = user_data;
+ GString *buf;
+ gs_free char *status = NULL;
+ guint outstanding_fetches;
+ guint outstanding_writes;
+ guint n_scanned_metadata;
+
+ if (!console)
+ return;
+
+ buf = g_string_new ("");
+
+ status = ostree_async_progress_get_status (progress);
+ outstanding_fetches = ostree_async_progress_get_uint (progress, "outstanding-fetches");
+ outstanding_writes = ostree_async_progress_get_uint (progress, "outstanding-writes");
+ n_scanned_metadata = ostree_async_progress_get_uint (progress, "scanned-metadata");
+ if (status)
+ {
+ g_string_append (buf, status);
+ }
+ else if (outstanding_fetches)
+ {
+ 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;
+
+ 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_sec, formatted_bytes_transferred);
+ }
+ else if (outstanding_writes)
+ {
+ g_string_append_printf (buf, "Writing objects: %u", outstanding_writes);
+ }
+ else
+ {
+ g_string_append_printf (buf, "Scanning metadata: %u", n_scanned_metadata);
+ }
+
+ gs_console_begin_status_line (console, buf->str, NULL, NULL);
+
+ g_string_free (buf, TRUE);
+}
+
+/**
* ostree_repo_append_gpg_signature:
* @self: Self
* @commit_checksum: SHA256 of given commit to sign
diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h
index b08c0f5..be04aa5 100644
--- a/src/libostree/ostree-repo.h
+++ b/src/libostree/ostree-repo.h
@@ -591,6 +591,9 @@ gboolean ostree_repo_pull_with_options (OstreeRepo *self,
GCancellable *cancellable,
GError **error);
+void ostree_repo_pull_default_console_progress_changed (OstreeAsyncProgress *progress,
+ gpointer user_data);
+
gboolean ostree_repo_sign_commit (OstreeRepo *self,
const gchar *commit_checksum,
const gchar *key_id,
diff --git a/src/ostree/ot-admin-builtin-switch.c b/src/ostree/ot-admin-builtin-switch.c
index 2f6c334..ff9d6e9 100644
--- a/src/ostree/ot-admin-builtin-switch.c
+++ b/src/ostree/ot-admin-builtin-switch.c
@@ -23,7 +23,6 @@
#include "ot-main.h"
#include "ot-admin-builtins.h"
#include "ot-admin-functions.h"
-#include "ot-builtins-common.h"
#include "ostree.h"
#include "otutil.h"
#include "libgsystem.h"
@@ -129,7 +128,7 @@ ot_admin_builtin_switch (int argc, char **argv, GCancellable *cancellable, GErro
{
gs_console_begin_status_line (console, "", NULL, NULL);
in_status_line = TRUE;
- progress = ostree_async_progress_new_and_connect (ot_common_pull_progress, console);
+ progress = ostree_async_progress_new_and_connect (ostree_repo_pull_default_console_progress_changed,
console);
}
/* Always allow older...there's not going to be a chronological
diff --git a/src/ostree/ot-admin-builtin-upgrade.c b/src/ostree/ot-admin-builtin-upgrade.c
index 1dff0a5..5ccd0b3 100644
--- a/src/ostree/ot-admin-builtin-upgrade.c
+++ b/src/ostree/ot-admin-builtin-upgrade.c
@@ -25,7 +25,6 @@
#include "ot-main.h"
#include "ot-admin-builtins.h"
#include "ot-admin-functions.h"
-#include "ot-builtins-common.h"
#include "ostree.h"
#include "otutil.h"
#include "libgsystem.h"
@@ -84,7 +83,7 @@ ot_admin_builtin_upgrade (int argc, char **argv, GCancellable *cancellable, GErr
{
gs_console_begin_status_line (console, "", NULL, NULL);
in_status_line = TRUE;
- progress = ostree_async_progress_new_and_connect (ot_common_pull_progress, console);
+ progress = ostree_async_progress_new_and_connect (ostree_repo_pull_default_console_progress_changed,
console);
}
if (opt_allow_downgrade)
diff --git a/src/ostree/ot-builtin-pull.c b/src/ostree/ot-builtin-pull.c
index ed013ca..0846605 100644
--- a/src/ostree/ot-builtin-pull.c
+++ b/src/ostree/ot-builtin-pull.c
@@ -24,7 +24,6 @@
#include "ot-main.h"
#include "ot-builtins.h"
-#include "ot-builtins-common.h"
#include "ostree.h"
#include "otutil.h"
@@ -97,7 +96,7 @@ ostree_builtin_pull (int argc, char **argv, GCancellable *cancellable, GError **
if (console)
{
gs_console_begin_status_line (console, "", NULL, NULL);
- progress = ostree_async_progress_new_and_connect (ot_common_pull_progress, console);
+ progress = ostree_async_progress_new_and_connect (ostree_repo_pull_default_console_progress_changed,
console);
}
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]