[Spice-devel] [PATCH spice-server 4/4] Provide and reuse default implementation for config_socket
Christophe Fergeau
cfergeau at redhat.com
Tue Feb 14 14:55:25 UTC 2017
On Mon, Feb 13, 2017 at 11:03:19AM +0000, Frediano Ziglio wrote:
> Most channel don't need to do specific settings for the
> client socket so provide a default implementation to
> make easier to setup the client channnel.
>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
> server/inputs-channel.c | 6 ------
> server/main-channel.c | 6 ------
> server/red-channel-client.c | 5 +++++
> server/red-channel-client.h | 2 ++
> server/red-channel.c | 2 ++
> server/smartcard.c | 6 ------
> server/spicevmc.c | 6 ------
> 7 files changed, 9 insertions(+), 24 deletions(-)
>
> diff --git a/server/inputs-channel.c b/server/inputs-channel.c
> index 897e8e7..6a6dce8 100644
> --- a/server/inputs-channel.c
> +++ b/server/inputs-channel.c
> @@ -488,11 +488,6 @@ static void inputs_pipe_add_init(RedChannelClient *rcc)
> red_channel_client_pipe_add_push(rcc, &item->base);
> }
>
> -static int inputs_channel_config_socket(RedChannelClient *rcc)
> -{
> - return TRUE;
> -}
> -
> static void inputs_connect(RedChannel *channel, RedClient *client,
> RedsStream *stream, int migration,
> int num_common_caps, uint32_t *common_caps,
> @@ -638,7 +633,6 @@ inputs_channel_class_init(InputsChannelClass *klass)
> channel_class->handle_parsed = inputs_channel_handle_parsed;
>
> /* channel callbacks */
> - channel_class->config_socket = inputs_channel_config_socket;
> channel_class->on_disconnect = inputs_channel_on_disconnect;
> channel_class->send_item = inputs_channel_send_item;
> channel_class->alloc_recv_buf = inputs_channel_alloc_msg_rcv_buf;
> diff --git a/server/main-channel.c b/server/main-channel.c
> index 1124506..4f39b91 100644
> --- a/server/main-channel.c
> +++ b/server/main-channel.c
> @@ -277,11 +277,6 @@ static void main_channel_release_msg_rcv_buf(RedChannelClient *rcc,
> }
> }
>
> -static int main_channel_config_socket(RedChannelClient *rcc)
> -{
> - return TRUE;
> -}
> -
> static int main_channel_handle_migrate_flush_mark(RedChannelClient *rcc)
> {
> RedChannel *channel = red_channel_client_get_channel(rcc);
> @@ -355,7 +350,6 @@ main_channel_class_init(MainChannelClass *klass)
> channel_class->handle_parsed = main_channel_handle_parsed;
>
> /* channel callbacks */
> - channel_class->config_socket = main_channel_config_socket;
> channel_class->on_disconnect = main_channel_client_on_disconnect;
> channel_class->send_item = main_channel_client_send_item;
> channel_class->alloc_recv_buf = main_channel_alloc_msg_rcv_buf;
> diff --git a/server/red-channel-client.c b/server/red-channel-client.c
> index 2450923..f55ba85 100644
> --- a/server/red-channel-client.c
> +++ b/server/red-channel-client.c
> @@ -1820,6 +1820,11 @@ gboolean red_channel_client_set_migration_seamless(RedChannelClient *rcc)
> return ret;
> }
>
> +int red_channel_client_config_socket(RedChannelClient *rcc)
> +{
> + return TRUE;
> +}
> +
> void red_channel_client_set_destroying(RedChannelClient *rcc)
> {
> rcc->priv->destroying = TRUE;
> diff --git a/server/red-channel-client.h b/server/red-channel-client.h
> index fada609..a5dc709 100644
> --- a/server/red-channel-client.h
> +++ b/server/red-channel-client.h
> @@ -190,6 +190,8 @@ gboolean red_channel_client_set_migration_seamless(RedChannelClient *rcc);
> void red_channel_client_set_destroying(RedChannelClient *rcc);
> gboolean red_channel_client_is_destroying(RedChannelClient *rcc);
>
> +int red_channel_client_config_socket(RedChannelClient *rcc);
> +
> struct RedChannelClient
> {
> GObject parent;
> diff --git a/server/red-channel.c b/server/red-channel.c
> index f2a35f3..fb34406 100644
> --- a/server/red-channel.c
> +++ b/server/red-channel.c
> @@ -268,6 +268,8 @@ red_channel_class_init(RedChannelClass *klass)
> object_class->finalize = red_channel_finalize;
> object_class->constructed = red_channel_constructed;
>
> + klass->config_socket = red_channel_client_config_socket;
> +
I would not provide any default implementation, and just change
red_channel_config_socket to
@@ -739,6 +739,10 @@ int red_channel_config_socket(RedChannel *self, RedChannelClient *rcc)
{
RedChannelClass *klass = RED_CHANNEL_GET_CLASS(self);
+ if (!klass->config_socket) {
+ return TRUE;
+ }
+
return klass->config_socket(rcc);
}
If you prefer to provide an empty stub as the default impl, I'd name it
red_channel_client_default_config_socket()
Reviewed-by: Christophe Fergeau <cfergeau at redhat.com>
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170214/7ceb4a9c/attachment.sig>
More information about the Spice-devel
mailing list