summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2016-04-20 20:18:53 +0200
committerTimm Bäder <mail@baedert.org>2016-04-20 20:18:53 +0200
commitf12688f28d3b353a7ffa18dd5828889920b1e60f (patch)
tree1dc09b47f0666c5e170b9b65348768c0f9a95608
parenta407494da4bdce50f4b5bf15d9c5bfedae77d724 (diff)
downloadlibrest-f12688f28d3b353a7ffa18dd5828889920b1e60f.tar.gz
rest-proxy: Port _invoke_async to GTask
-rw-r--r--rest/rest-proxy-call.c50
-rw-r--r--rest/rest-proxy-call.h1
2 files changed, 19 insertions, 32 deletions
diff --git a/rest/rest-proxy-call.c b/rest/rest-proxy-call.c
index f5dc6bc..ed81040 100644
--- a/rest/rest-proxy-call.c
+++ b/rest/rest-proxy-call.c
@@ -1016,30 +1016,27 @@ _call_message_call_completed_cb (SoupSession *session,
SoupMessage *message,
gpointer user_data)
{
- GSimpleAsyncResult *result = user_data;
+ GTask *task = user_data;
RestProxyCall *call;
GError *error = NULL;
- call = REST_PROXY_CALL (
- g_async_result_get_source_object (G_ASYNC_RESULT (result)));
+ call = REST_PROXY_CALL (g_task_get_source_object (task));
finish_call (call, message, &error);
if (error != NULL)
- g_simple_async_result_take_error (result, error);
+ g_task_return_error (task, error);
else
- g_simple_async_result_set_op_res_gboolean (result, TRUE);
-
- g_simple_async_result_complete (result);
+ g_task_return_boolean (task, TRUE);
g_object_unref (call);
- g_object_unref (result);
+ g_object_unref (task);
}
/**
* rest_proxy_call_invoke_async:
* @call: a #RestProxyCall
- * @cancellable: (allow-none): an optional #GCancellable that can be used to
+ * @cancellable: (nullable): an optional #GCancellable that can be used to
* cancel the call, or %NULL
* @callback: (scope async): callback to call when the async call is finished
* @user_data: (closure): user data for the callback
@@ -1052,26 +1049,23 @@ rest_proxy_call_invoke_async (RestProxyCall *call,
GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
- RestProxyCallPrivate *priv;
+ RestProxyCallPrivate *priv = rest_proxy_call_get_instance_private (call);
+ GTask *task;
SoupMessage *message;
GError *error = NULL;
g_return_if_fail (REST_IS_PROXY_CALL (call));
- priv = GET_PRIVATE (call);
+ g_return_if_fail (callback == NULL || G_IS_CANCELLABLE (cancellable));
g_assert (priv->proxy);
message = prepare_message (call, &error);
+ task = g_task_new (call, cancellable, callback, user_data);
if (message == NULL)
{
- g_simple_async_report_take_gerror_in_idle (G_OBJECT (call), callback,
- user_data, error);
+ g_task_return_error (task, error);
return;
}
- result = g_simple_async_result_new (G_OBJECT (call), callback,
- user_data, rest_proxy_call_invoke_async);
-
if (cancellable != NULL)
{
priv->cancel_sig = g_signal_connect (cancellable, "cancelled",
@@ -1082,7 +1076,7 @@ rest_proxy_call_invoke_async (RestProxyCall *call,
_rest_proxy_queue_message (priv->proxy,
message,
_call_message_call_completed_cb,
- result);
+ task);
}
/**
@@ -1094,24 +1088,16 @@ rest_proxy_call_invoke_async (RestProxyCall *call,
* Returns: %TRUE on success
*/
gboolean
-rest_proxy_call_invoke_finish (RestProxyCall *call,
- GAsyncResult *result,
- GError **error)
+rest_proxy_call_invoke_finish (RestProxyCall *call,
+ GAsyncResult *result,
+ GError **error)
{
- GSimpleAsyncResult *simple;
- g_return_val_if_fail (REST_IS_PROXY_CALL (call), FALSE);
- g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE);
- simple = G_SIMPLE_ASYNC_RESULT (result);
-
- g_return_val_if_fail (g_simple_async_result_is_valid (result,
- G_OBJECT (call), rest_proxy_call_invoke_async), FALSE);
-
- if (g_simple_async_result_propagate_error (simple, error))
- return FALSE;
+ g_return_val_if_fail (REST_IS_PROXY_CALL (call), FALSE);
+ g_return_val_if_fail (g_task_is_valid (result, call), FALSE);
- return g_simple_async_result_get_op_res_gboolean (simple);
+ return g_task_propagate_boolean (G_TASK (result), error);
}
static void
diff --git a/rest/rest-proxy-call.h b/rest/rest-proxy-call.h
index 4b8f983..d78bb59 100644
--- a/rest/rest-proxy-call.h
+++ b/rest/rest-proxy-call.h
@@ -169,6 +169,7 @@ void rest_proxy_call_invoke_async (RestProxyCall *call,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
+
gboolean rest_proxy_call_invoke_finish (RestProxyCall *call,
GAsyncResult *result,
GError **error);