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@xxxxxxxxxx> --- 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 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel