diff options
Diffstat (limited to 'io/task.c')
-rw-r--r-- | io/task.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -29,6 +29,7 @@ struct QIOTask { QIOTaskFunc func; gpointer opaque; GDestroyNotify destroy; + Error *err; gpointer result; GDestroyNotify destroyResult; }; @@ -62,6 +63,9 @@ static void qio_task_free(QIOTask *task) if (task->destroyResult) { task->destroyResult(task->result); } + if (task->err) { + error_free(task->err); + } object_unref(task->source); g_free(task); @@ -159,6 +163,25 @@ void qio_task_abort(QIOTask *task, } +void qio_task_set_error(QIOTask *task, + Error *err) +{ + error_propagate(&task->err, err); +} + + +bool qio_task_propagate_error(QIOTask *task, + Error **errp) +{ + if (task->err) { + error_propagate(errp, task->err); + return true; + } + + return false; +} + + void qio_task_set_result_pointer(QIOTask *task, gpointer result, GDestroyNotify destroy) |