summary refs log tree commit diff stats
path: root/io
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2016-08-11 14:36:21 +0100
committerDaniel P. Berrange <berrange@redhat.com>2017-01-23 15:32:18 +0000
commit52dd99e8a4df8ace2fdf8cd173a3338357776bff (patch)
treea1369d3a1df1b5d757089e77ed992fa5e2b5c32e /io
parente8c8adecada7a3e59bffcc0207327aae472ffcda (diff)
downloadfocaccia-qemu-52dd99e8a4df8ace2fdf8cd173a3338357776bff.tar.gz
focaccia-qemu-52dd99e8a4df8ace2fdf8cd173a3338357776bff.zip
io: add ability to associate an opaque "result" with with a task
Currently there is no data associated with a successful
task completion. This adds an opaque pointer to the task
to store an arbitrary result.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'io')
-rw-r--r--io/task.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/io/task.c b/io/task.c
index a763990d47..675e196156 100644
--- a/io/task.c
+++ b/io/task.c
@@ -29,6 +29,8 @@ struct QIOTask {
     QIOTaskFunc func;
     gpointer opaque;
     GDestroyNotify destroy;
+    gpointer result;
+    GDestroyNotify destroyResult;
 };
 
 
@@ -57,6 +59,9 @@ static void qio_task_free(QIOTask *task)
     if (task->destroy) {
         task->destroy(task->opaque);
     }
+    if (task->destroyResult) {
+        task->destroyResult(task->result);
+    }
     object_unref(task->source);
 
     g_free(task);
@@ -154,6 +159,21 @@ void qio_task_abort(QIOTask *task,
 }
 
 
+void qio_task_set_result_pointer(QIOTask *task,
+                                 gpointer result,
+                                 GDestroyNotify destroy)
+{
+    task->result = result;
+    task->destroyResult = destroy;
+}
+
+
+gpointer qio_task_get_result_pointer(QIOTask *task)
+{
+    return task->result;
+}
+
+
 Object *qio_task_get_source(QIOTask *task)
 {
     return task->source;