[Spice-devel] [PATCH spice-server 2/2] red-channel: Move byte statistic to RedChannelClient
Frediano Ziglio
fziglio at redhat.com
Fri Mar 3 16:45:16 UTC 2017
As the counters are shared there is no reason why not
handling the byte count from RedChannelClient directly.
This remove a dependency and avoid some function calls.
The only visible difference at user level is that the
counters are created when a client connects.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/red-channel-client.c | 7 +++----
server/red-channel.c | 8 --------
server/red-channel.h | 1 -
3 files changed, 3 insertions(+), 13 deletions(-)
diff --git a/server/red-channel-client.c b/server/red-channel-client.c
index 80dfdbb..35bd01a 100644
--- a/server/red-channel-client.c
+++ b/server/red-channel-client.c
@@ -150,6 +150,7 @@ struct RedChannelClientPrivate
OutgoingMessageBuffer outgoing;
RedStatCounter out_messages;
+ RedStatCounter out_bytes;
};
static const SpiceDataHeaderOpaque full_header_wrapper;
@@ -380,6 +381,7 @@ static void red_channel_client_constructed(GObject *object)
RedsState* reds = red_channel_get_server(channel);
const RedStatNode *node = red_channel_get_stat_node(channel);
stat_init_counter(&self->priv->out_messages, reds, node, "out_messages", TRUE);
+ stat_init_counter(&self->priv->out_bytes, reds, node, "out_bytes", TRUE);
}
static void red_channel_client_class_init(RedChannelClientClass *klass)
@@ -458,13 +460,10 @@ RedChannel* red_channel_client_get_channel(RedChannelClient *rcc)
static void red_channel_client_data_sent(RedChannelClient *rcc, int n)
{
- RedChannel *channel = red_channel_client_get_channel(rcc);
-
if (rcc->priv->connectivity_monitor.timer) {
rcc->priv->connectivity_monitor.out_bytes += n;
}
- /* TODO: use a signal rather than a hardcoded call to a RedChannel callback? */
- red_channel_on_output(channel, n);
+ stat_inc_counter(rcc->priv->out_bytes, n);
}
static void red_channel_client_data_read(RedChannelClient *rcc, int n)
diff --git a/server/red-channel.c b/server/red-channel.c
index d78c628..3808155 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -99,7 +99,6 @@ struct RedChannelPrivate
pthread_t thread_id;
RedsState *reds;
RedStatNode stat;
- RedStatCounter out_bytes_counter;
};
enum {
@@ -188,11 +187,6 @@ red_channel_finalize(GObject *object)
G_OBJECT_CLASS(red_channel_parent_class)->finalize(object);
}
-void red_channel_on_output(RedChannel *self, int n)
-{
- stat_inc_counter(self->priv->out_bytes_counter, n);
-}
-
static void
red_channel_constructed(GObject *object)
{
@@ -370,8 +364,6 @@ void red_channel_init_stat_node(RedChannel *channel, const RedStatNode *parent,
// TODO check not already initialized
stat_init_node(&channel->priv->stat, channel->priv->reds, parent, name, TRUE);
- stat_init_counter(&channel->priv->out_bytes_counter,
- channel->priv->reds, &channel->priv->stat, "out_bytes", TRUE);
}
const RedStatNode *red_channel_get_stat_node(RedChannel *channel)
diff --git a/server/red-channel.h b/server/red-channel.h
index e076e2a..73bd1e1 100644
--- a/server/red-channel.h
+++ b/server/red-channel.h
@@ -232,7 +232,6 @@ SpiceCoreInterfaceInternal* red_channel_get_core_interface(RedChannel *channel);
/* channel callback function */
int red_channel_config_socket(RedChannel *self, RedChannelClient *rcc);
void red_channel_on_disconnect(RedChannel *self, RedChannelClient *rcc);
-void red_channel_on_output(RedChannel *self, int n);
void red_channel_send_item(RedChannel *self, RedChannelClient *rcc, RedPipeItem *item);
void red_channel_reset_thread_id(RedChannel *self);
const RedStatNode *red_channel_get_stat_node(RedChannel *channel);
--
2.9.3
More information about the Spice-devel
mailing list