[Spice-devel] [PATCH spice-server] char-device: Make RedClient an opaque structure again

Christophe Fergeau cfergeau at redhat.com
Tue Mar 12 10:47:00 UTC 2019


On Tue, Mar 12, 2019 at 05:58:40AM -0400, Frediano Ziglio wrote:
> ping
> 
> > 
> > RedClient was an opaque structure for RedCharDevice.
> > It started to be used when RedsState started to contain all
> > the global state.
> > Make it opaque again.

It seems we don't put the same meaning to 'opaque'. For me, RedClient is
already an opaque structure from a char-device.c perspective as it's not
dereferencing RedClient * (ie it does not know/care which fields are
defined in struct RedClient).

This commit goes further than that as it removes any calls to
red_client_* API. char-device.c still cares that it is handling a
pointer to a RedClient * (as opposed to a gpointer client_handle which
could be anything). Do you have some longer term goal with respect to
RedClient and RedCharDevice, or is this just an isolated patch?

Christophe


> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  server/char-device.c | 16 +++++++---------
> >  1 file changed, 7 insertions(+), 9 deletions(-)
> > 
> > diff --git a/server/char-device.c b/server/char-device.c
> > index 040b91147..465c1a125 100644
> > --- a/server/char-device.c
> > +++ b/server/char-device.c
> > @@ -22,8 +22,8 @@
> >  
> >  #include <config.h>
> >  #include <inttypes.h>
> > +
> >  #include "char-device.h"
> > -#include "red-client.h"
> >  #include "reds.h"
> >  #include "glib-compat.h"
> >  
> > @@ -703,11 +703,10 @@ void red_char_device_destroy(RedCharDevice *char_dev)
> >      g_object_unref(char_dev);
> >  }
> >  
> > -static RedCharDeviceClient *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)
> > +static RedCharDeviceClient *
> > +red_char_device_client_new(RedsState *reds, RedClient *client,
> > +                           int do_flow_control, uint32_t
> > max_send_queue_size,
> > +                           uint32_t num_client_tokens, uint32_t
> > num_send_tokens)
> >  {
> >      RedCharDeviceClient *dev_client;
> >  
> > @@ -717,8 +716,6 @@ static RedCharDeviceClient
> > *red_char_device_client_new(RedClient *client,
> >      dev_client->max_send_queue_size = max_send_queue_size;
> >      dev_client->do_flow_control = do_flow_control;
> >      if (do_flow_control) {
> > -        RedsState *reds = red_client_get_server(client);
> > -
> >          dev_client->wait_for_tokens_timer =
> >              reds_core_timer_add(reds, device_client_wait_for_tokens_timeout,
> >                                  dev_client);
> > @@ -757,7 +754,8 @@ bool red_char_device_client_add(RedCharDevice *dev,
> >      dev->priv->wait_for_migrate_data = wait_for_migrate_data;
> >  
> >      spice_debug("char device %p, client %p", dev, client);
> > -    dev_client = red_char_device_client_new(client, do_flow_control,
> > +    dev_client = red_char_device_client_new(dev->priv->reds, client,
> > +                                            do_flow_control,
> >                                              max_send_queue_size,
> >                                              num_client_tokens,
> >                                              num_send_tokens);
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20190312/783b50a1/attachment-0001.sig>


More information about the Spice-devel mailing list