E/S Asíncrona

Se puede perfectamente decir que GNOME-VFS es todo lo que hace falta para las necesidades de un programador, en el ámbito de la E/S de datos, y para corroborar eso, GNOME-VFS ofrece, aparte de las funciones de E/S básicas comentadas anteriormente. Sus equivalentes asíncronos, que permiten realizar todas las operaciones anteriormente comentadas de forma asíncrona, de manera que dichas operaciones no bloquearán al resto de la aplicación, sino que se ejecutarán de forma concurrente a los demás procesos que realice nuestra aplicación.

La forma de funcionamiento de este conjunto de llamadas asíncronas es muy parecido al que se ha comentado anteriormente, con la única diferencia que se deberá añadir un nuevo parámetro a las llamadas a funciones de GNOME-VFS:

      GnomeVFSAsyncHandle *handle = NULL;

      gnome_vfs_async_open (&handle, "ftp://ftp.gnome.org/gnumeric.deb",
                            GNOME_VFS_OPEN_READ,
                            (GnomeVFSAsyncOpenCallback) funcion_callback,
	                    NULL);
    

funcion_callback, que es la función que será llamada cuando se complete la operación (consiguiendo así el asincronismo), tendría el siguiente aspecto:

      void funcion_callback (GnomeVFSHandle *handle,
                             GnomeVFSResult result,
	                     gpointer user_data);
    

Donde handle es el identificador devuelto por gnome_vfs_async_open, result es el código del error producido en la operación (si se produjo alguno) y user_data es el puntero especificado como último parámetro en la llamada a la función gnome_vfs_async_open, y que permite pasar datos propios desde el lugar donde se inicia la operación asíncrona y la función de "callback".