[libvirt] [libvirt-glib PATCHv4 3/7] gobject: Port GVirConnection to GTask

Christophe Fergeau cfergeau at redhat.com
Tue Jul 7 08:27:58 UTC 2015


On Wed, Jul 01, 2015 at 09:40:47PM +0100, Zeeshan Ali (Khattak) wrote:
> GSimpleAsyncResult has been deprecated in favour of GTask and with
> latest glib headers, we get tons of warnings about use of deprecated
> API. This patch ports the GVirConnection class to GTask.
> ---
>  libvirt-gobject/libvirt-gobject-connection.c | 246 ++++++++++++---------------
>  1 file changed, 110 insertions(+), 136 deletions(-)
> 
> diff --git a/libvirt-gobject/libvirt-gobject-connection.c b/libvirt-gobject/libvirt-gobject-connection.c
> index dddbd3a..f7a6066 100644
> --- a/libvirt-gobject/libvirt-gobject-connection.c
> +++ b/libvirt-gobject/libvirt-gobject-connection.c
> @@ -497,17 +497,18 @@ gboolean gvir_connection_open_read_only(GVirConnection *conn,
>  }
>  
>  static void
> -gvir_connection_open_helper(GSimpleAsyncResult *res,
> -                            GObject *object,
> +gvir_connection_open_helper(GTask *res,

I'd have a strong preference for "GTask *task" throughout the patch
rather than "GTask *res"

> +                            gpointer object,
> +                            gpointer task_data G_GNUC_UNUSED,
>                              GCancellable *cancellable)
>  {
>      GVirConnection *conn = GVIR_CONNECTION(object);
>      GError *err = NULL;
>  
> -    if (!gvir_connection_open(conn, cancellable, &err)) {
> -        g_simple_async_result_set_from_error(res, err);
> -        g_error_free(err);
> -    }
> +    if (!gvir_connection_open(conn, cancellable, &err))
> +        g_task_return_error(res, err);
> +    else
> +        g_task_return_boolean(res, TRUE);
>  }
>  
>  
> @@ -523,19 +524,19 @@ void gvir_connection_open_async(GVirConnection *conn,
>                                  GAsyncReadyCallback callback,
>                                  gpointer user_data)
>  {
> -    GSimpleAsyncResult *res;
> +    GTask *res;
>  
>      g_return_if_fail(GVIR_IS_CONNECTION(conn));
>      g_return_if_fail((cancellable == NULL) || G_IS_CANCELLABLE(cancellable));
>  
> -    res = g_simple_async_result_new(G_OBJECT(conn),
> -                                    callback,
> -                                    user_data,
> -                                    gvir_connection_open_async);
> -    g_simple_async_result_run_in_thread(res,
> -                                        gvir_connection_open_helper,
> -                                        G_PRIORITY_DEFAULT,
> -                                        cancellable);
> +    res = g_task_new(G_OBJECT(conn),
> +                     cancellable,
> +                     callback,
> +                     user_data);
> +    g_task_set_source_tag(res,
> +                          gvir_connection_open_async);

You set the source tag, but never use it, you're missing a
g_task_get_source_tag() check if the async complete callback.

[snip]

> @@ -1760,21 +1744,18 @@ gvir_connection_restore_domain_from_file_async(GVirConnection *conn,
>          data->custom_conf = g_object_ref(custom_conf);
>      data->flags = flags;
>  
> -    res = g_simple_async_result_new
> -                         (G_OBJECT(conn),
> -                          callback,
> -                          user_data,
> +    res = g_task_new (G_OBJECT(conn),

Nit: Extra space before opening parens

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150707/071cfd7a/attachment-0001.sig>


More information about the libvir-list mailing list