Skip to content

Commit

Permalink
Add ostree_repo_pull_default_console_progress_changed()
Browse files Browse the repository at this point in the history
Replaces ot_common_pull_progress() in ostree binary, so it can be shared
with rpm-ostree.
  • Loading branch information
mbarnes committed Dec 19, 2014
1 parent abb8833 commit 880328b
Show file tree
Hide file tree
Showing 9 changed files with 81 additions and 121 deletions.
2 changes: 0 additions & 2 deletions Makefile-ostree.am
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
1 change: 1 addition & 0 deletions doc/ostree-sections.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
74 changes: 74 additions & 0 deletions src/libostree/ostree-repo.c
Original file line number Diff line number Diff line change
Expand Up @@ -2733,6 +2733,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
Expand Down
3 changes: 3 additions & 0 deletions src/libostree/ostree-repo.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
3 changes: 1 addition & 2 deletions src/ostree/ot-admin-builtin-switch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions src/ostree/ot-admin-builtin-upgrade.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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)
Expand Down
3 changes: 1 addition & 2 deletions src/ostree/ot-builtin-pull.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

#include "ot-main.h"
#include "ot-builtins.h"
#include "ot-builtins-common.h"
#include "ostree.h"
#include "otutil.h"

Expand Down Expand Up @@ -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);
}

{
Expand Down
86 changes: 0 additions & 86 deletions src/ostree/ot-builtins-common.c

This file was deleted.

27 changes: 0 additions & 27 deletions src/ostree/ot-builtins-common.h

This file was deleted.

0 comments on commit 880328b

Please sign in to comment.