## Cancellation

Cancellation — halt in-progress operations

## Synopsis

    GnomeVFSCancellation * gnome_vfs_cancellation_new       (void);
    void                gnome_vfs_cancellation_destroy      (GnomeVFSCancellation *cancellation);
    void                gnome_vfs_cancellation_cancel       (GnomeVFSCancellation *cancellation);
    gboolean            gnome_vfs_cancellation_check        (GnomeVFSCancellation *cancellation);
    void                gnome_vfs_cancellation_ack          (GnomeVFSCancellation *cancellation);
    gint                gnome_vfs_cancellation_get_fd       (GnomeVFSCancellation *cancellation);

## Description

## Details

### gnome_vfs_cancellation_new ()

    GnomeVFSCancellation * gnome_vfs_cancellation_new       (void);

Create a new GnomeVFSCancellation object for reporting cancellation to a gnome-vfs module.

Returns : | A pointer to the new GnomeVFSCancellation object.

### gnome_vfs_cancellation_destroy ()

    void                gnome_vfs_cancellation_destroy      (GnomeVFSCancellation *cancellation);

Destroy `cancellation`.

`cancellation` : | a GnomeVFSCancellation object.

### gnome_vfs_cancellation_cancel ()

    void                gnome_vfs_cancellation_cancel       (GnomeVFSCancellation *cancellation);

Send a cancellation request through `cancellation`.

If called on a different thread than the one handling idle callbacks, there is a small race condition where the operation finished callback will be called even if you cancelled the operation. Its the apps responsibility to handle this. See `gnome_vfs_async_cancel()` for more discussion about this.

`cancellation` : | a GnomeVFSCancellation object.

### gnome_vfs_cancellation_check ()

    gboolean            gnome_vfs_cancellation_check        (GnomeVFSCancellation *cancellation);

Check for pending cancellation.

`cancellation` : | a GnomeVFSCancellation object.
Returns : | `TRUE` if the operation should be interrupted.

### gnome_vfs_cancellation_ack ()

    void                gnome_vfs_cancellation_ack          (GnomeVFSCancellation *cancellation);

Acknowledge a cancellation. This should be called if `gnome_vfs_cancellation_check()` returns `TRUE` or if `select()` reports that input is available on the file descriptor returned by `gnome_vfs_cancellation_get_fd()`.

`cancellation` : | a GnomeVFSCancellation object.

### gnome_vfs_cancellation_get_fd ()

    gint                gnome_vfs_cancellation_get_fd       (GnomeVFSCancellation *cancellation);

Get a file descriptor -based notificator for `cancellation`. When `cancellation` receives a cancellation request, a character will be made available on the returned file descriptor for input.

This is very useful for detecting cancellation during I/O operations: you can use the `select()` call to check for available input/output on the file you are reading/writing, and on the notificator's file descriptor at the same time. If a data is available on the notificator's file descriptor, you know you have to cancel the read/write operation.

`cancellation` : | a GnomeVFSCancellation object.
Returns : | the notificator's file descriptor, or -1 if starved of file descriptors.