[Spice-devel] [spice-server v2 12/14] rcc: Remove red-channel-client-private.h
Frediano Ziglio
fziglio at redhat.com
Tue Feb 14 15:08:48 UTC 2017
>
> Nothing outside of RedChannelClient needs access to data contained in
> RedChannelClientPrivate, so we can move all the type definitions to the
> .c file to make it fully opaque rather than relying on a private header.
>
> Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
> ---
> server/Makefile.am | 1 -
> server/red-channel-client-private.h | 130
> ------------------------------------
> server/red-channel-client.c | 107 ++++++++++++++++++++++++++++-
> 3 files changed, 106 insertions(+), 132 deletions(-)
> delete mode 100644 server/red-channel-client-private.h
>
> diff --git a/server/Makefile.am b/server/Makefile.am
> index 6db4e7b..a043660 100644
> --- a/server/Makefile.am
> +++ b/server/Makefile.am
> @@ -101,7 +101,6 @@ libserver_la_SOURCES = \
> red-channel.h \
> red-channel-client.c \
> red-channel-client.h \
> - red-channel-client-private.h \
> red-client.c \
> red-client.h \
> red-common.h \
> diff --git a/server/red-channel-client-private.h
> b/server/red-channel-client-private.h
> deleted file mode 100644
> index 5c1308b..0000000
> --- a/server/red-channel-client-private.h
> +++ /dev/null
> @@ -1,130 +0,0 @@
> -/*
> - Copyright (C) 2009-2015 Red Hat, Inc.
> -
> - This library is free software; you can redistribute it and/or
> - modify it under the terms of the GNU Lesser General Public
> - License as published by the Free Software Foundation; either
> - version 2.1 of the License, or (at your option) any later version.
> -
> - This library is distributed in the hope that it will be useful,
> - but WITHOUT ANY WARRANTY; without even the implied warranty of
> - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> - Lesser General Public License for more details.
> -
> - You should have received a copy of the GNU Lesser General Public
> - License along with this library; if not, see
> <http://www.gnu.org/licenses/>.
> -*/
> -
> -#ifndef _H_RED_CHANNEL_CLIENT_PRIVATE
> -#define _H_RED_CHANNEL_CLIENT_PRIVATE
> -
> -#include "red-channel.h"
> -#include "red-channel-client.h"
> -
> -typedef struct SpiceDataHeaderOpaque SpiceDataHeaderOpaque;
> -
> -typedef uint16_t (*get_msg_type_proc)(SpiceDataHeaderOpaque *header);
> -typedef uint32_t (*get_msg_size_proc)(SpiceDataHeaderOpaque *header);
> -typedef void (*set_msg_type_proc)(SpiceDataHeaderOpaque *header, uint16_t
> type);
> -typedef void (*set_msg_size_proc)(SpiceDataHeaderOpaque *header, uint32_t
> size);
> -typedef void (*set_msg_serial_proc)(SpiceDataHeaderOpaque *header, uint64_t
> serial);
> -typedef void (*set_msg_sub_list_proc)(SpiceDataHeaderOpaque *header,
> uint32_t sub_list);
> -
> -struct SpiceDataHeaderOpaque {
> - uint8_t *data;
> - uint16_t header_size;
> -
> - set_msg_type_proc set_msg_type;
> - set_msg_size_proc set_msg_size;
> - set_msg_serial_proc set_msg_serial;
> - set_msg_sub_list_proc set_msg_sub_list;
> -
> - get_msg_type_proc get_msg_type;
> - get_msg_size_proc get_msg_size;
> -};
> -
> -typedef struct RedChannelClientLatencyMonitor {
> - int state;
> - uint64_t last_pong_time;
> - SpiceTimer *timer;
> - uint32_t id;
> - int tcp_nodelay;
> - int warmup_was_sent;
> -
> - int64_t roundtrip;
> -} RedChannelClientLatencyMonitor;
> -
> -typedef struct RedChannelClientConnectivityMonitor {
> - int state;
> - uint32_t out_bytes;
> - uint32_t in_bytes;
> - uint32_t timeout;
> - SpiceTimer *timer;
> -} RedChannelClientConnectivityMonitor;
> -
> -typedef struct OutgoingHandler {
> - struct iovec vec_buf[IOV_MAX];
> - int vec_size;
> - struct iovec *vec;
> - int pos;
> - int size;
> -} OutgoingHandler;
> -
> -typedef struct IncomingHandler {
> - uint8_t header_buf[MAX_HEADER_SIZE];
> - SpiceDataHeaderOpaque header;
> - uint32_t header_pos;
> - uint8_t *msg; // data of the msg following the header. allocated by
> alloc_msg_buf.
> - uint32_t msg_pos;
> -} IncomingHandler;
> -
> -struct RedChannelClientPrivate
> -{
> - RedChannel *channel;
> - RedClient *client;
> - RedsStream *stream;
> - gboolean monitor_latency;
> -
> - struct {
> - uint32_t generation;
> - uint32_t client_generation;
> - uint32_t messages_window;
> - uint32_t client_window;
> - } ack_data;
> -
> - struct {
> - /* this can be either main.marshaller or urgent.marshaller */
> - SpiceMarshaller *marshaller;
> - SpiceDataHeaderOpaque header;
> - uint32_t size;
> - int blocked;
> - uint64_t last_sent_serial;
> -
> - struct {
> - SpiceMarshaller *marshaller;
> - uint8_t *header_data;
> - } main;
> -
> - struct {
> - SpiceMarshaller *marshaller;
> - } urgent;
> - } send_data;
> -
> - int during_send;
> - GQueue pipe;
> -
> - RedChannelCapabilities remote_caps;
> - int is_mini_header;
> - gboolean destroying;
> -
> - int wait_migrate_data;
> - int wait_migrate_flush_mark;
> -
> - RedChannelClientLatencyMonitor latency_monitor;
> - RedChannelClientConnectivityMonitor connectivity_monitor;
> -
> - IncomingHandler incoming;
> - OutgoingHandler outgoing;
> -};
> -
> -#endif /* _H_RED_CHANNEL_CLIENT_PRIVATE */
> diff --git a/server/red-channel-client.c b/server/red-channel-client.c
> index d33e756..a22df6b 100644
> --- a/server/red-channel-client.c
> +++ b/server/red-channel-client.c
> @@ -34,10 +34,115 @@
> #include <common/generated_server_marshallers.h>
>
> #include "red-channel-client.h"
> -#include "red-channel-client-private.h"
> #include "red-client.h"
> #include "glib-compat.h"
>
> +typedef struct SpiceDataHeaderOpaque SpiceDataHeaderOpaque;
> +
> +typedef uint16_t (*get_msg_type_proc)(SpiceDataHeaderOpaque *header);
> +typedef uint32_t (*get_msg_size_proc)(SpiceDataHeaderOpaque *header);
> +typedef void (*set_msg_type_proc)(SpiceDataHeaderOpaque *header, uint16_t
> type);
> +typedef void (*set_msg_size_proc)(SpiceDataHeaderOpaque *header, uint32_t
> size);
> +typedef void (*set_msg_serial_proc)(SpiceDataHeaderOpaque *header, uint64_t
> serial);
> +typedef void (*set_msg_sub_list_proc)(SpiceDataHeaderOpaque *header,
> uint32_t sub_list);
> +
> +struct SpiceDataHeaderOpaque {
> + uint8_t *data;
> + uint16_t header_size;
> +
> + set_msg_type_proc set_msg_type;
> + set_msg_size_proc set_msg_size;
> + set_msg_serial_proc set_msg_serial;
> + set_msg_sub_list_proc set_msg_sub_list;
> +
> + get_msg_type_proc get_msg_type;
> + get_msg_size_proc get_msg_size;
> +};
> +
> +typedef struct RedChannelClientLatencyMonitor {
> + int state;
> + uint64_t last_pong_time;
> + SpiceTimer *timer;
> + uint32_t id;
> + int tcp_nodelay;
> + int warmup_was_sent;
> +
> + int64_t roundtrip;
> +} RedChannelClientLatencyMonitor;
> +
> +typedef struct RedChannelClientConnectivityMonitor {
> + int state;
> + uint32_t out_bytes;
> + uint32_t in_bytes;
> + uint32_t timeout;
> + SpiceTimer *timer;
> +} RedChannelClientConnectivityMonitor;
> +
> +typedef struct OutgoingHandler {
> + struct iovec vec_buf[IOV_MAX];
> + int vec_size;
> + struct iovec *vec;
> + int pos;
> + int size;
> +} OutgoingHandler;
> +
> +typedef struct IncomingHandler {
> + uint8_t header_buf[MAX_HEADER_SIZE];
> + SpiceDataHeaderOpaque header;
> + uint32_t header_pos;
> + uint8_t *msg; // data of the msg following the header. allocated by
> alloc_msg_buf.
> + uint32_t msg_pos;
> +} IncomingHandler;
> +
> +struct RedChannelClientPrivate
> +{
> + RedChannel *channel;
> + RedClient *client;
> + RedsStream *stream;
> + gboolean monitor_latency;
> +
> + struct {
> + uint32_t generation;
> + uint32_t client_generation;
> + uint32_t messages_window;
> + uint32_t client_window;
> + } ack_data;
> +
> + struct {
> + /* this can be either main.marshaller or urgent.marshaller */
> + SpiceMarshaller *marshaller;
> + SpiceDataHeaderOpaque header;
> + uint32_t size;
> + int blocked;
> + uint64_t last_sent_serial;
> +
> + struct {
> + SpiceMarshaller *marshaller;
> + uint8_t *header_data;
> + } main;
> +
> + struct {
> + SpiceMarshaller *marshaller;
> + } urgent;
> + } send_data;
> +
> + int during_send;
> + GQueue pipe;
> +
> + RedChannelCapabilities remote_caps;
> + int is_mini_header;
> + gboolean destroying;
> +
> + int wait_migrate_data;
> + int wait_migrate_flush_mark;
> +
> + RedChannelClientLatencyMonitor latency_monitor;
> + RedChannelClientConnectivityMonitor connectivity_monitor;
> +
> + IncomingHandler incoming;
> + OutgoingHandler outgoing;
> +};
> +
> static const SpiceDataHeaderOpaque full_header_wrapper;
> static const SpiceDataHeaderOpaque mini_header_wrapper;
> static void red_channel_client_clear_sent_item(RedChannelClient *rcc);
Acked-by: Frediano Ziglio <fziglio at redhat.com>
Frediano
More information about the Spice-devel
mailing list