## UDisksThreadedJob UDisksThreadedJob — Job that runs in a thread |

## Synopsis

                        UDisksThreadedJob;
    gboolean            (*UDisksThreadedJobFunc)            (UDisksThreadedJob *job,
                                                             GCancellable *cancellable,
                                                             gpointer user_data,
                                                             GError **error);
    UDisksThreadedJob * udisks_threaded_job_new             (UDisksThreadedJobFunc job_func,
                                                             gpointer user_data,
                                                             GDestroyNotify user_data_free_func,
                                                             UDisksDaemon *daemon,
                                                             GCancellable *cancellable);
    gpointer            udisks_threaded_job_get_user_data   (UDisksThreadedJob *job);

## Object Hierarchy

      GObject
       +----GDBusInterfaceSkeleton
             +----UDisksJobSkeleton
                   +----UDisksBaseJob
                         +----UDisksThreadedJob

## Implemented Interfaces

UDisksThreadedJob implements GDBusInterface and UDisksJob.

## Properties

      "job-func"                 gpointer              : Read / Write / Construct Only
      "user-data"                gpointer              : Read / Write / Construct Only
      "user-data-free-func"      gpointer              : Read / Write / Construct Only

## Signals

      "threaded-job-completed"                         : Run Last

## Description

This type provides an implementation of the UDisksJob interface for jobs that run in a thread.

## Details

### UDisksThreadedJob

    typedef struct _UDisksThreadedJob UDisksThreadedJob;

The UDisksThreadedJob structure contains only private data and should only be accessed using the provided API.

### UDisksThreadedJobFunc ()

    gboolean            (*UDisksThreadedJobFunc)            (UDisksThreadedJob *job,
                                                             GCancellable *cancellable,
                                                             gpointer user_data,
                                                             GError **error);

Job function that runs in a separate thread.

Long-running jobs should periodically check `cancellable` to see if they have been cancelled.

`job` : | A UDisksThreadedJob.
`cancellable` : | A GCancellable (never `NULL`).
`user_data` : | User data passed when creating `job`.
`error` : | Return location for error (never `NULL`).
Returns : | `TRUE` if the job succeeded, `FALSE` if `error` is set.

### udisks_threaded_job_new ()

    UDisksThreadedJob * udisks_threaded_job_new             (UDisksThreadedJobFunc job_func,
                                                             gpointer user_data,
                                                             GDestroyNotify user_data_free_func,
                                                             UDisksDaemon *daemon,
                                                             GCancellable *cancellable);

Creates a new UDisksThreadedJob instance.

The job is started immediately - connect to the "threaded-job-completed" or "completed" signals to get notified when the job is done.

`job_func` : | The function to run in another thread.
`user_data` : | User data to pass to `job_func`.
`user_data_free_func` : | Function to free `user_data` with or `NULL`.
`daemon` : | A UDisksDaemon.
`cancellable` : | A GCancellable or `NULL`.
Returns : | A new UDisksThreadedJob. Free with `g_object_unref()`.

### udisks_threaded_job_get_user_data ()

    gpointer            udisks_threaded_job_get_user_data   (UDisksThreadedJob *job);

Gets the `user_data` parameter that `job` was constructed with.

`job` : | A UDisksThreadedJob.
Returns : | A gpointer owned by `job`.

## Property Details

### The `"job-func"` property

      "job-func"                 gpointer              : Read / Write / Construct Only

The UDisksThreadedJobFunc to use.

### The `"user-data"` property

      "user-data"                gpointer              : Read / Write / Construct Only

User data for the UDisksThreadedJobFunc.

### The `"user-data-free-func"` property

      "user-data-free-func"      gpointer              : Read / Write / Construct Only

Free function for user data for the UDisksThreadedJobFunc.

## Signal Details

### The `"threaded-job-completed"` signal

    gboolean            user_function                      (UDisksThreadedJob *job,
                                                            gboolean           result,
                                                            GError            *error,
                                                            gpointer           user_data)      : Run Last

Emitted when the threaded job is complete.

The default implementation simply emits the "completed" signal with `success` set to `TRUE` if, and only if, `error` is `NULL`. Otherwise, `message` on that signal is set to a string describing `error`. You can avoid the default implementation by returning `TRUE` from your signal handler.

This signal is emitted in the thread-default main loop of the thread that `job` was created in.

`job` : | The UDisksThreadedJob emitting the signal.
`result` : | The gboolean returned by the UDisksThreadedJobFunc.
`error` : | The GError set by the UDisksThreadedJobFunc.
`user_data` : | user data set when the signal handler was connected.
Returns : | `TRUE` if the signal was handled, `FALSE` to let other handlers run.