<!-- ##### SECTION Title ##### -->
Asynchronous File Operations

<!-- ##### SECTION Short_Description ##### -->

POSIX-style file operations that run outside your main loop

<!-- ##### SECTION Long_Description ##### -->
<para>
  When executing an asynchornous operation on a file the program does not 
  block waiting for the operation to finish, instead it keeps on running, 
  which means that the process and the I/O operation can be both running
  concurrently. Once the I/O operation has been completed the process is
  notified using a callback.
</para>

<para>
  Asynchronous operations are particularly good when long I/O operations 
  are expected, in this case the program can continue normaly, the I/O
  will be performed in the background. On the other hand when operations
  are expected to be short (creating a file, writing/reading small amounts
  of data, etc.) synchronous operations are prefered.
</para>

<para>
  Within a graphical desktop asynchornous I/O operations can be used to
  avoid blocking the UI (User Interface) during a long operation, and 
  to be able to provide some kind of feedback to the user.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### MACRO GNOME_VFS_PRIORITY_MIN ##### -->
<para>

</para>



<!-- ##### MACRO GNOME_VFS_PRIORITY_MAX ##### -->
<para>

</para>



<!-- ##### MACRO GNOME_VFS_PRIORITY_DEFAULT ##### -->
<para>

</para>



<!-- ##### TYPEDEF GnomeVFSAsyncHandle ##### -->
<para>

</para>


<!-- ##### USER_FUNCTION GnomeVFSAsyncCallback ##### -->
<para>

</para>

@handle: 
@result: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncOpenCallback ##### -->
<para>

</para>

@handle: 
@result: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncOpenAsChannelCallback ##### -->
<para>

</para>

@handle: 
@channel: 
@result: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncCreateCallback ##### -->
<para>

</para>

@handle: 
@result: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncCreateAsChannelCallback ##### -->
<para>

</para>

@handle: 
@channel: 
@result: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncCloseCallback ##### -->
<para>

</para>

@handle: 
@result: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncReadCallback ##### -->
<para>

</para>

@handle: 
@result: 
@buffer: 
@bytes_requested: 
@bytes_read: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncWriteCallback ##### -->
<para>

</para>

@handle: 
@result: 
@buffer: 
@bytes_requested: 
@bytes_written: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncSeekCallback ##### -->
<para>

</para>

@handle: 
@result: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncGetFileInfoCallback ##### -->
<para>

</para>

@handle: 
@results: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncSetFileInfoCallback ##### -->
<para>

</para>

@handle: 
@result: 
@file_info: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncFileControlCallback ##### -->
<para>

</para>

@handle: 
@result: 
@operation_data: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncDirectoryLoadCallback ##### -->
<para>

</para>

@handle: 
@result: 
@list: 
@entries_read: 
@callback_data: 


<!-- ##### USER_FUNCTION GnomeVFSAsyncFindDirectoryCallback ##### -->
<para>

</para>

@handle: 
@results: 
@data: 


<!-- ##### STRUCT GnomeVFSFindDirectoryResult ##### -->
<para>

</para>

@uri: 
@result: 

<!-- ##### USER_FUNCTION GnomeVFSAsyncXferProgressCallback ##### -->
<para>

</para>

@handle: 
@info: 
@user_data: 
@Returns: 


<!-- ##### TYPEDEF GnomeVFSCancellation ##### -->
<para>

</para>


<!-- ##### TYPEDEF GnomeVFSContext ##### -->
<para>

</para>


<!-- ##### FUNCTION gnome_vfs_async_set_job_limit ##### -->
<para>

</para>

@limit: 


<!-- ##### FUNCTION gnome_vfs_async_get_job_limit ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION gnome_vfs_async_cancel ##### -->
<para>

</para>

@handle: 


<!-- ##### FUNCTION gnome_vfs_async_open ##### -->
<para>

</para>

@handle_return: 
@text_uri: 
@open_mode: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_open_uri ##### -->
<para>

</para>

@handle_return: 
@uri: 
@open_mode: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_open_as_channel ##### -->
<para>

</para>

@handle_return: 
@text_uri: 
@open_mode: 
@advised_block_size: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_open_uri_as_channel ##### -->
<para>

</para>

@handle_return: 
@uri: 
@open_mode: 
@advised_block_size: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_create ##### -->
<para>

</para>

@handle_return: 
@text_uri: 
@open_mode: 
@exclusive: 
@perm: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_create_uri ##### -->
<para>

</para>

@handle_return: 
@uri: 
@open_mode: 
@exclusive: 
@perm: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_create_symbolic_link ##### -->
<para>

</para>

@handle_return: 
@uri: 
@uri_reference: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_create_as_channel ##### -->
<para>

</para>

@handle_return: 
@text_uri: 
@open_mode: 
@exclusive: 
@perm: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_create_uri_as_channel ##### -->
<para>

</para>

@handle_return: 
@uri: 
@open_mode: 
@exclusive: 
@perm: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_close ##### -->
<para>

</para>

@handle: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_read ##### -->
<para>

</para>

@handle: 
@buffer: 
@bytes: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_write ##### -->
<para>

</para>

@handle: 
@buffer: 
@bytes: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_seek ##### -->
<para>

</para>

@handle: 
@whence: 
@offset: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_get_file_info ##### -->
<para>

</para>

@handle_return: 
@uri_list: 
@options: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_set_file_info ##### -->
<para>

</para>

@handle_return: 
@uri: 
@info: 
@mask: 
@options: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_load_directory ##### -->
<para>

</para>

@handle_return: 
@text_uri: 
@options: 
@items_per_notification: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_load_directory_uri ##### -->
<para>

</para>

@handle_return: 
@uri: 
@options: 
@items_per_notification: 
@priority: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_async_xfer ##### -->
<para>

</para>

@handle_return: 
@source_uri_list: 
@target_uri_list: 
@xfer_options: 
@error_mode: 
@overwrite_mode: 
@priority: 
@progress_update_callback: 
@update_callback_data: 
@progress_sync_callback: 
@sync_callback_data: 
@Returns: 


<!-- ##### FUNCTION gnome_vfs_async_find_directory ##### -->
<para>

</para>

@handle_return: 
@near_uri_list: 
@kind: 
@create_if_needed: 
@find_if_needed: 
@permissions: 
@priority: 
@callback: 
@user_data: 


<!-- ##### FUNCTION gnome_vfs_async_file_control ##### -->
<para>

</para>

@handle: 
@operation: 
@operation_data: 
@operation_data_destroy_func: 
@callback: 
@callback_data: 


<!-- ##### FUNCTION gnome_vfs_find_directory_result_dup ##### -->
<para>

</para>

@result: 
@Returns: 


<!-- ##### FUNCTION gnome_vfs_find_directory_result_free ##### -->
<para>

</para>

@result: 


