| Top |
functions asynchronously in an ExoJob wrapper object. It is easier to use than the GThread system and provides basic signals to follow the progress of an operation.
gboolean (*ExoSimpleJobFunc) (ExoJob *job,GValueArray *param_values,GError **error);
Used by the ExoSimpleJob to process the job
. See exo_simple_job_launch()
for further details.
job |
an ExoJob. |
|
param_values |
a GValueArray of the GValues passed to
|
|
error |
return location for errors. |
ExoJob * exo_simple_job_launch (ExoSimpleJobFunc func,guint n_param_values,...);
Allocates a new ExoJob which executes the specified func
with
the specified parameters.
An example could be:
static gboolean
list_directory (ExoJob *job,
GValueArray *param_values,
GError **error)
{
GFileEnumerator *enumerator;
GFileInfo *info;
GError *err = NULL;
GFile *directory;
if (exo_job_set_error_if_cancelled (EXO_JOB (job), error))
return FALSE;
directory = g_value_get_object (g_value_array_get_nth (param_values, 0));
enumerator = g_file_enumerate_children (directory,
"standard::display-name",
G_FILE_QUERY_INFO_NONE,
exo_job_get_cancellable (job),
&err);
if (err != NULL)
{
g_propagate_error (error, err);
return FALSE;
}
while (TRUE)
{
info = g_file_enumerator_next_file (enumerator,
exo_job_get_cancellable (job),
&err);
if (info == NULL)
break;
exo_job_info_message (job, _("Child: %s"),
g_file_info_get_display_name (info));
g_object_unref (info);
}
g_object_unref (enumerator);
if (err != NULL)
{
g_propagate_error (error, err);
return FALSE;
}
else
{
return TRUE;
}
}
...
GFile *file = g_file_new_for_path ("/home/user");
ExoJob *job = exo_simple_job_launch (list_directory, 1, G_TYPE_FILE, file);
g_signal_connect (job, "info-message", G_CALLBACK (update_some_widget), widget);
g_signal_connect (job, "finished", G_CALLBACK (unref_the_job_object), NULL);
The caller is responsible to release the returned ExoJob object
using g_object_unref() when no longer needed.
func |
the ExoSimpleJobFunc to execute the job. |
|
n_param_values |
the number of parameters to pass to the |
|
... |
a list of GType and parameter pairs (exactly
|
typedef struct _ExoSimpleJob ExoSimpleJob;
The ExoSimpleJob struct contains only private fields and should not be directly accessed.