[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 4/8] io: add ability to associate an opaque "resul
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PULL v2 4/8] io: add ability to associate an opaque "result" with with a task |
Date: |
Mon, 23 Jan 2017 15:57:33 +0000 |
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 <address@hidden>
Signed-off-by: Daniel P. Berrange <address@hidden>
---
include/io/task.h | 27 +++++++++++++++++++++++++++
io/task.c | 20 ++++++++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/include/io/task.h b/include/io/task.h
index 1407747..ece1372 100644
--- a/include/io/task.h
+++ b/include/io/task.h
@@ -240,6 +240,33 @@ void qio_task_abort(QIOTask *task,
/**
+ * qio_task_set_result_pointer:
+ * @task: the task struct
+ * @result: pointer to the result data
+ *
+ * Associate an opaque result with the task,
+ * which can later be retrieved with the
+ * qio_task_get_result_pointer() method
+ *
+ */
+void qio_task_set_result_pointer(QIOTask *task,
+ gpointer result,
+ GDestroyNotify notify);
+
+
+/**
+ * qio_task_get_result_pointer:
+ * @task: the task struct
+ *
+ * Retrieve the opaque result data associated
+ * with the task, if any.
+ *
+ * Returns: the task result, or NULL
+ */
+gpointer qio_task_get_result_pointer(QIOTask *task);
+
+
+/**
* qio_task_get_source:
* @task: the task struct
*
diff --git a/io/task.c b/io/task.c
index a763990..675e196 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;
--
2.9.3
- [Qemu-devel] [PULL v2 0/8] Merge io/ 2017-01-23, Daniel P. Berrange, 2017/01/23
- [Qemu-devel] [PULL v2 1/8] sockets: add ability to disable DNS resolution for InetSocketAddress, Daniel P. Berrange, 2017/01/23
- [Qemu-devel] [PULL v2 2/8] io: stop incrementing reference in qio_task_get_source, Daniel P. Berrange, 2017/01/23
- [Qemu-devel] [PULL v2 3/8] io: fix typo in docs for QIOTask, Daniel P. Berrange, 2017/01/23
- [Qemu-devel] [PULL v2 4/8] io: add ability to associate an opaque "result" with with a task,
Daniel P. Berrange <=
- [Qemu-devel] [PULL v2 5/8] io: add ability to associate an error with a task, Daniel P. Berrange, 2017/01/23
- [Qemu-devel] [PULL v2 7/8] io: remove Error parameter from QIOTask thread worker, Daniel P. Berrange, 2017/01/23
- [Qemu-devel] [PULL v2 6/8] io: change the QIOTask callback signature, Daniel P. Berrange, 2017/01/23
- [Qemu-devel] [PULL v2 8/8] io: introduce a DNS resolver API, Daniel P. Berrange, 2017/01/23
- Re: [Qemu-devel] [PULL v2 0/8] Merge io/ 2017-01-23, Peter Maydell, 2017/01/23