transaction: Add flatpak_transaction_progress_get_bytes_per_second()

This commit is contained in:
razzeee
2026-06-09 16:43:37 +02:00
committed by Sebastian Wick
parent 5fcf748ac9
commit 4006907ba3
4 changed files with 35 additions and 1 deletions

View File

@@ -74,6 +74,7 @@ void flatpak_progress_set_update_interval (FlatpakProgress *self,
guint64 flatpak_progress_get_bytes_transferred (FlatpakProgress *self);
guint64 flatpak_progress_get_transferred_extra_data_bytes (FlatpakProgress *self);
guint64 flatpak_progress_get_start_time (FlatpakProgress *self);
guint64 flatpak_progress_get_bytes_per_second (FlatpakProgress *self);
const char *flatpak_progress_get_status (FlatpakProgress *self);
int flatpak_progress_get_progress (FlatpakProgress *self);
gboolean flatpak_progress_get_estimating (FlatpakProgress *self);

View File

@@ -113,6 +113,7 @@ struct _FlatpakProgress
/* Self-progress-reporting fields, not from OSTree */
guint progress;
guint last_total;
guint64 bytes_per_second;
guint32 update_interval;
@@ -190,6 +191,7 @@ update_status_progress_and_estimating (FlatpakProgress *self)
extra data, so ignore those */
if (self->requested == 0)
{
self->bytes_per_second = 0;
return;
}
@@ -209,6 +211,7 @@ update_status_progress_and_estimating (FlatpakProgress *self)
{
g_string_append (buf, self->ostree_status);
new_progress = 100;
self->bytes_per_second = 0;
goto out;
}
@@ -302,9 +305,15 @@ update_status_progress_and_estimating (FlatpakProgress *self)
if (elapsed_time > 0) // Ignore first second
{
g_autofree gchar *formatted_bytes_sec = g_format_size (total_transferred / elapsed_time);
g_autofree gchar *formatted_bytes_sec = NULL;
self->bytes_per_second = total_transferred / elapsed_time;
formatted_bytes_sec = g_format_size (self->bytes_per_second);
g_string_append_printf (buf, " (%s/s)", formatted_bytes_sec);
}
else
{
self->bytes_per_second = 0;
}
out:
if (new_progress < self->progress && self->last_total == total)
@@ -482,6 +491,12 @@ flatpak_progress_get_start_time (FlatpakProgress *self)
return self->start_time;
}
guint64
flatpak_progress_get_bytes_per_second (FlatpakProgress *self)
{
return self->bytes_per_second;
}
const char *
flatpak_progress_get_status (FlatpakProgress *self)
{

View File

@@ -395,6 +395,22 @@ flatpak_transaction_progress_get_start_time (FlatpakTransactionProgress *self)
return flatpak_progress_get_start_time (self->progress_obj);
}
/**
* flatpak_transaction_progress_get_bytes_per_second:
* @self: a #FlatpakTransactionProgress
*
* Gets the current transfer speed in bytes per second. Returns 0 during
* the first second of a transfer while the rate is being established.
*
* Returns: the current transfer rate in bytes per second
* Since: 1.19.0
*/
guint64
flatpak_transaction_progress_get_bytes_per_second (FlatpakTransactionProgress *self)
{
return flatpak_progress_get_bytes_per_second (self->progress_obj);
}
static void
flatpak_transaction_progress_finalize (GObject *object)
{

View File

@@ -175,6 +175,8 @@ FLATPAK_EXTERN
guint64 flatpak_transaction_progress_get_bytes_transferred (FlatpakTransactionProgress *self);
FLATPAK_EXTERN
guint64 flatpak_transaction_progress_get_start_time (FlatpakTransactionProgress *self);
FLATPAK_EXTERN
guint64 flatpak_transaction_progress_get_bytes_per_second (FlatpakTransactionProgress *self);
FLATPAK_EXTERN