[Spice-devel] [PATCH 09/15] char-device: Refactor spice_char_device_client_add a bit
Frediano Ziglio
fziglio at redhat.com
Wed Mar 9 17:05:56 UTC 2016
>
> From: Christophe Fergeau <cfergeau at redhat.com>
>
> Factor out CharDeviceClientState creation out of
> spice_char_device_client_add.
> ---
> server/char-device.c | 54
> ++++++++++++++++++++++++++++++++++------------------
> 1 file changed, 35 insertions(+), 19 deletions(-)
>
> diff --git a/server/char-device.c b/server/char-device.c
> index cda2d60..1d22a30 100644
> --- a/server/char-device.c
> +++ b/server/char-device.c
> @@ -767,6 +767,37 @@ void
> spice_char_device_state_destroy(SpiceCharDeviceState *char_dev)
> spice_char_device_state_unref(char_dev);
> }
>
> +SpiceCharDeviceClientState *red_char_device_client_new(RedClient *client,
> + int do_flow_control,
> + uint32_t max_send_queue_size,
> + uint32_t num_client_tokens,
> + uint32_t num_send_tokens)
> +{
Why not static?
> + SpiceCharDeviceClientState *dev_client;
> +
> + dev_client = spice_new0(SpiceCharDeviceClientState, 1);
> + dev_client->client = client;
> + ring_init(&dev_client->send_queue);
> + dev_client->send_queue_size = 0;
> + dev_client->max_send_queue_size = max_send_queue_size;
> + dev_client->do_flow_control = do_flow_control;
> + if (do_flow_control) {
> + dev_client->wait_for_tokens_timer =
> + reds_core_timer_add(client->reds,
> device_client_wait_for_tokens_timeout,
> + dev_client);
> + if (!dev_client->wait_for_tokens_timer) {
> + spice_error("failed to create wait for tokens timer");
> + }
> + dev_client->num_client_tokens = num_client_tokens;
> + dev_client->num_send_tokens = num_send_tokens;
> + } else {
> + dev_client->num_client_tokens = ~0;
> + dev_client->num_send_tokens = ~0;
> + }
> +
> + return dev_client;
> +}
> +
> int spice_char_device_client_add(SpiceCharDeviceState *dev,
> RedClient *client,
> int do_flow_control,
> @@ -789,26 +820,11 @@ int spice_char_device_client_add(SpiceCharDeviceState
> *dev,
> dev->wait_for_migrate_data = wait_for_migrate_data;
>
> spice_debug("dev_state %p client %p", dev, client);
> - dev_client = spice_new0(SpiceCharDeviceClientState, 1);
> + dev_client = red_char_device_client_new(client, do_flow_control,
> + max_send_queue_size,
> + num_client_tokens,
> + num_send_tokens);
> dev_client->dev = dev;
> - dev_client->client = client;
> - ring_init(&dev_client->send_queue);
> - dev_client->send_queue_size = 0;
> - dev_client->max_send_queue_size = max_send_queue_size;
> - dev_client->do_flow_control = do_flow_control;
> - if (do_flow_control) {
> - dev_client->wait_for_tokens_timer =
> - reds_core_timer_add(dev->reds,
> device_client_wait_for_tokens_timeout,
> - dev_client);
> - if (!dev_client->wait_for_tokens_timer) {
> - spice_error("failed to create wait for tokens timer");
> - }
> - dev_client->num_client_tokens = num_client_tokens;
> - dev_client->num_send_tokens = num_send_tokens;
> - } else {
> - dev_client->num_client_tokens = ~0;
> - dev_client->num_send_tokens = ~0;
> - }
> ring_add(&dev->clients, &dev_client->link);
> dev->num_clients++;
> /* Now that we have a client, forward any pending device data */
Apart from the comment patch is good.
Frediano
More information about the Spice-devel
mailing list