[Spice-devel] [RFC spice-gtk 1/5] spice-channel: new 'total-write-bytes' property
Victor Toso
victortoso at redhat.com
Fri Apr 7 13:19:26 UTC 2017
From: Victor Toso <me at victortoso.com>
Combined with "total-read-bytes" property that already exists, the
application can estimate the write and read rate of each SpiceChannel
as well as the whole SpiceSession.
Related: https://bugs.freedesktop.org/show_bug.cgi?id=96598
Related: https://bugs.freedesktop.org/show_bug.cgi?id=87324
Signed-off-by: Victor Toso <victortoso at redhat.com>
---
src/spice-channel-priv.h | 1 +
src/spice-channel.c | 23 +++++++++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/src/spice-channel-priv.h b/src/spice-channel-priv.h
index 50aca5c..76d1aae 100644
--- a/src/spice-channel-priv.h
+++ b/src/spice-channel-priv.h
@@ -139,6 +139,7 @@ struct _SpiceChannelPrivate {
GArray *remote_common_caps;
gsize total_read_bytes;
+ gsize total_write_bytes;
uint64_t last_message_serial;
GSList *flushing;
diff --git a/src/spice-channel.c b/src/spice-channel.c
index e42e560..b3fd521 100644
--- a/src/spice-channel.c
+++ b/src/spice-channel.c
@@ -95,6 +95,7 @@ enum {
PROP_CHANNEL_ID,
PROP_TOTAL_READ_BYTES,
PROP_SOCKET,
+ PROP_TOTAL_WRITE_BYTES,
};
/* Signals */
@@ -228,6 +229,9 @@ static void spice_channel_get_property(GObject *gobject,
case PROP_SOCKET:
g_value_set_object(value, c->sock);
break;
+ case PROP_TOTAL_WRITE_BYTES:
+ g_value_set_ulong(value, c->total_write_bytes);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec);
break;
@@ -349,6 +353,24 @@ static void spice_channel_class_init(SpiceChannelClass *klass)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS));
+
+ /**
+ * SpiceChannel:total-write-bytes
+ *
+ *
+ * Get the amount of bytes written through the wire.
+ *
+ * Since: 0.34
+ */
+ g_object_class_install_property
+ (gobject_class, PROP_TOTAL_WRITE_BYTES,
+ g_param_spec_ulong("total-write-bytes",
+ "Total write bytes",
+ "Amount of bytes written",
+ 0, G_MAXULONG, 0,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+
/**
* SpiceChannel::channel-event:
* @channel: the channel that emitted the signal
@@ -852,6 +874,7 @@ static void spice_channel_flush_wire(SpiceChannel *channel,
return;
}
offset += ret;
+ c->total_write_bytes += ret;
}
}
--
2.9.3
More information about the Spice-devel
mailing list