[Spice-devel] [spice-gtk][PATCH] Added INFO messages about a file transfer
Pavel Grunt
pgrunt at redhat.com
Mon Sep 15 03:07:29 PDT 2014
https://bugzilla.redhat.com/show_bug.cgi?id=1140512
When a file transfer starts / finishes an information message is printed (in INFO log level)
---
gtk/channel-main.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/gtk/channel-main.c b/gtk/channel-main.c
index 021fa83..7a59613 100644
--- a/gtk/channel-main.c
+++ b/gtk/channel-main.c
@@ -70,6 +70,7 @@ typedef struct SpiceFileXferTask {
char buffer[FILE_XFER_CHUNK_SIZE];
uint64_t read_bytes;
uint64_t file_size;
+ GDateTime *start_time;
GError *error;
} SpiceFileXferTask;
@@ -1538,6 +1539,7 @@ static void file_xfer_task_free(SpiceFileXferTask *task)
g_clear_object(&task->channel);
g_clear_object(&task->file);
g_clear_object(&task->file_stream);
+ g_date_time_unref(task->start_time);
g_free(task);
}
@@ -1548,6 +1550,9 @@ static void file_xfer_close_cb(GObject *object,
{
GSimpleAsyncResult *res;
SpiceFileXferTask *task;
+ GDateTime *end;
+ char *basename;
+ double seconds;
GError *error = NULL;
task = user_data;
@@ -1572,6 +1577,17 @@ static void file_xfer_close_cb(GObject *object,
g_simple_async_result_take_error(res, task->error);
g_simple_async_result_set_op_res_gboolean(res, FALSE);
} else {
+ end = g_date_time_new_now_local();
+ seconds = (double) g_date_time_difference(end, task->start_time) / 1000000.0;
+ g_date_time_unref(end);
+ basename = g_file_get_basename(task->file);
+ if (basename != NULL) {
+ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
+ "transferred file %s of %.2f kB size in %.2f seconds (%.1f MB/s)",
+ basename, task->file_size / 1000.0, seconds,
+ (task->file_size/1000000.0)/seconds);
+ g_free(basename);
+ }
g_simple_async_result_set_op_res_gboolean(res, TRUE);
}
g_simple_async_result_complete_in_idle(res);
@@ -2739,6 +2755,7 @@ static void file_xfer_send_start_msg_async(SpiceMainChannel *channel,
{
SpiceMainChannelPrivate *c = channel->priv;
SpiceFileXferTask *task;
+ char *basename;
static uint32_t xfer_id; /* Used to identify task id */
task = g_malloc0(sizeof(SpiceFileXferTask));
@@ -2751,7 +2768,13 @@ static void file_xfer_send_start_msg_async(SpiceMainChannel *channel,
task->progress_callback_data = progress_callback_data;
task->callback = callback;
task->user_data = user_data;
+ task->start_time = g_date_time_new_now_local();
+ basename = g_file_get_basename(task->file);
+ if (basename != NULL) {
+ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "transfer of file %s has started", basename);
+ g_free(basename);
+ }
CHANNEL_DEBUG(task->channel, "Insert a xfer task:%d to task list", task->id);
g_hash_table_insert(c->file_xfer_tasks, GUINT_TO_POINTER(task->id), task);
--
1.9.3
More information about the Spice-devel
mailing list