[Spice-devel] [spice-gtk Win32 v3 02/12] NamedPipe: spice_named_pipe_new: add param to distinguish Server or Client

Arnon Gilboa agilboa at redhat.com
Wed Jun 27 23:20:16 PDT 2012


ack

Uri Lublin wrote:
> Currently both users are servers.
> ---
>  gtk/controller/namedpipe.c                   |   24 +++++++++++++++++-------
>  gtk/controller/namedpipe.h                   |    4 +++-
>  gtk/controller/spice-controller-listener.c   |    2 +-
>  gtk/controller/spice-foreign-menu-listener.c |    2 +-
>  4 files changed, 22 insertions(+), 10 deletions(-)
>
> diff --git a/gtk/controller/namedpipe.c b/gtk/controller/namedpipe.c
> index 355887a..20dde4c 100644
> --- a/gtk/controller/namedpipe.c
> +++ b/gtk/controller/namedpipe.c
> @@ -80,12 +80,21 @@ spice_named_pipe_constructed (GObject *object)
>         pipe, in overlapped mode */
>      goto end;
>
> -  np->priv->handle = CreateNamedPipe (np->priv->name,
> -      PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
> -      PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
> -      PIPE_UNLIMITED_INSTANCES,
> -      DEFAULT_PIPE_BUF_SIZE, DEFAULT_PIPE_BUF_SIZE,
> -      0, NULL);
> +  if (np->priv->is_server) {
> +      np->priv->handle = CreateNamedPipe (np->priv->name,
> +          PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
> +          PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
> +          PIPE_UNLIMITED_INSTANCES,
> +          DEFAULT_PIPE_BUF_SIZE, DEFAULT_PIPE_BUF_SIZE,
> +          0, NULL);
> +  } else {
> +      np->priv->handle = CreateFile (np->priv->name,
> +          GENERIC_READ | GENERIC_WRITE,
> +          0, NULL,
> +          OPEN_EXISTING,
> +          FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
> +          NULL);
> +  }
>
>    if (np->priv->handle == INVALID_HANDLE_VALUE)
>      {
> @@ -244,11 +253,12 @@ spice_named_pipe_initable_iface_init (GInitableIface *iface)
>  }
>
>  SpiceNamedPipe *
> -spice_named_pipe_new (const gchar *name, GError **error)
> +spice_named_pipe_new (const gchar *name, const gboolean is_server, GError **error)
>  {
>    return SPICE_NAMED_PIPE (g_initable_new (SPICE_TYPE_NAMED_PIPE,
>                                             NULL, error,
>                                             "name", name,
> +                                           "isserver", is_server,
>                                             NULL));
>  }
>
> diff --git a/gtk/controller/namedpipe.h b/gtk/controller/namedpipe.h
> index e0e873b..59f5618 100644
> --- a/gtk/controller/namedpipe.h
> +++ b/gtk/controller/namedpipe.h
> @@ -50,7 +50,9 @@ struct _SpiceNamedPipe
>
>  GType            spice_named_pipe_get_type  (void) G_GNUC_CONST;
>
> -SpiceNamedPipe * spice_named_pipe_new       (const gchar *name, GError **error);
> +SpiceNamedPipe * spice_named_pipe_new       (const gchar *name,
> +                                             const gboolean is_server,
> +                                             GError **error);
>  void *           spice_named_pipe_get_handle(SpiceNamedPipe *namedpipe);
>  gboolean         spice_named_pipe_close     (SpiceNamedPipe *namedpipe,
>                                               GError **error);
> diff --git a/gtk/controller/spice-controller-listener.c b/gtk/controller/spice-controller-listener.c
> index da1121e..202d516 100644
> --- a/gtk/controller/spice-controller-listener.c
> +++ b/gtk/controller/spice-controller-listener.c
> @@ -89,7 +89,7 @@ spice_controller_listener_new (const gchar *address, GError **error)
>
>          listener = G_OBJECT (spice_named_pipe_listener_new ());
>
> -        np = spice_named_pipe_new (addr, error);
> +        np = spice_named_pipe_new (addr, TRUE, error);
>          if (!np) {
>              g_object_unref (listener);
>              listener = NULL;
> diff --git a/gtk/controller/spice-foreign-menu-listener.c b/gtk/controller/spice-foreign-menu-listener.c
> index 8322a13..53e03e7 100644
> --- a/gtk/controller/spice-foreign-menu-listener.c
> +++ b/gtk/controller/spice-foreign-menu-listener.c
> @@ -91,7 +91,7 @@ spice_foreign_menu_listener_new (const gchar *address, GError **error)
>
>          listener = G_OBJECT (spice_named_pipe_listener_new ());
>
> -        np = spice_named_pipe_new (addr, error);
> +        np = spice_named_pipe_new (addr, TRUE, error);
>          if (!np) {
>              g_object_unref (listener);
>              listener = NULL;
>   



More information about the Spice-devel mailing list