[libgdata] documents: Port from GSimpleAsyncResult to GTask
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgdata] documents: Port from GSimpleAsyncResult to GTask
- Date: Wed, 9 Aug 2017 13:57:32 +0000 (UTC)
commit e264589f13695d55955dbe8ddb8a2743bde034d8
Author: Philip Withnall <withnall endlessm com>
Date: Wed Aug 9 14:56:59 2017 +0100
documents: Port from GSimpleAsyncResult to GTask
Port GDataDocumentsService.
Signed-off-by: Philip Withnall <withnall endlessm com>
gdata/services/documents/gdata-documents-service.c | 196 +++++++-------------
1 files changed, 70 insertions(+), 126 deletions(-)
---
diff --git a/gdata/services/documents/gdata-documents-service.c
b/gdata/services/documents/gdata-documents-service.c
index 0bfdcc2..5d667e9 100644
--- a/gdata/services/documents/gdata-documents-service.c
+++ b/gdata/services/documents/gdata-documents-service.c
@@ -465,21 +465,18 @@ gdata_documents_service_get_metadata (GDataDocumentsService *self, GCancellable
}
static void
-get_metadata_thread (GSimpleAsyncResult *result, GDataDocumentsService *service, GCancellable *cancellable)
+get_metadata_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable)
{
- GDataDocumentsMetadata *metadata;
- GError *error = NULL;
+ GDataDocumentsService *service = GDATA_DOCUMENTS_SERVICE (source_object);
+ g_autoptr(GDataDocumentsMetadata) metadata = NULL;
+ g_autoptr(GError) error = NULL;
/* Copy the metadata and return */
metadata = gdata_documents_service_get_metadata (service, cancellable, &error);
- if (error != NULL) {
- g_simple_async_result_set_from_error (result, error);
- g_error_free (error);
- return;
- }
-
- /* Return the metadata */
- g_simple_async_result_set_op_res_gpointer (result, g_object_ref (metadata), (GDestroyNotify)
g_object_unref);
+ if (error != NULL)
+ g_task_return_error (task, g_steal_pointer (&error));
+ else
+ g_task_return_pointer (task, g_steal_pointer (&metadata), g_object_unref);
}
/**
@@ -503,14 +500,14 @@ void
gdata_documents_service_get_metadata_async (GDataDocumentsService *self, GCancellable *cancellable,
GAsyncReadyCallback callback, gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_autoptr(GTask) task = NULL;
g_return_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self));
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
- result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
gdata_documents_service_get_metadata_async);
- g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc) get_metadata_thread,
G_PRIORITY_DEFAULT, cancellable);
- g_object_unref (result);
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, gdata_documents_service_get_metadata_async);
+ g_task_run_in_thread (task, get_metadata_thread);
}
/**
@@ -528,23 +525,13 @@ gdata_documents_service_get_metadata_async (GDataDocumentsService *self, GCancel
GDataDocumentsMetadata *
gdata_documents_service_get_metadata_finish (GDataDocumentsService *self, GAsyncResult *async_result, GError
**error)
{
- GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (async_result);
- GDataDocumentsMetadata *metadata;
-
g_return_val_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self), NULL);
g_return_val_if_fail (G_IS_ASYNC_RESULT (async_result), NULL);
- g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
- g_warn_if_fail (g_simple_async_result_get_source_tag (result) ==
gdata_documents_service_get_metadata_async);
-
- if (g_simple_async_result_propagate_error (result, error) == TRUE) {
- return NULL;
- }
-
- metadata = g_simple_async_result_get_op_res_gpointer (result);
- g_assert (GDATA_IS_DOCUMENTS_METADATA (metadata));
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (g_task_is_valid (async_result, self), NULL);
+ g_return_val_if_fail (g_async_result_is_tagged (async_result,
gdata_documents_service_get_metadata_async), NULL);
- return metadata;
+ return g_task_propagate_pointer (G_TASK (async_result), error);
}
static gchar *
@@ -1098,23 +1085,19 @@ gdata_documents_service_copy_document (GDataDocumentsService *self, GDataDocumen
}
static void
-copy_document_thread (GSimpleAsyncResult *result, GDataDocumentsService *service, GCancellable *cancellable)
+copy_document_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable)
{
- GDataDocumentsDocument *document, *new_document;
- GError *error = NULL;
-
- document = g_simple_async_result_get_op_res_gpointer (result);
+ GDataDocumentsService *service = GDATA_DOCUMENTS_SERVICE (source_object);
+ GDataDocumentsDocument *document = task_data;
+ g_autoptr(GDataDocumentsDocument) new_document = NULL;
+ g_autoptr(GError) error = NULL;
/* Copy the document and return */
new_document = gdata_documents_service_copy_document (service, document, cancellable, &error);
- if (error != NULL) {
- g_simple_async_result_set_from_error (result, error);
- g_error_free (error);
- return;
- }
-
- /* Return the document copy */
- g_simple_async_result_set_op_res_gpointer (result, g_object_ref (new_document), (GDestroyNotify)
g_object_unref);
+ if (error != NULL)
+ g_task_return_error (task, g_steal_pointer (&error));
+ else
+ g_task_return_pointer (task, g_steal_pointer (&new_document), g_object_unref);
}
/**
@@ -1139,16 +1122,16 @@ void
gdata_documents_service_copy_document_async (GDataDocumentsService *self, GDataDocumentsDocument *document,
GCancellable *cancellable,
GAsyncReadyCallback callback, gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_autoptr(GTask) task = NULL;
g_return_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self));
g_return_if_fail (GDATA_IS_DOCUMENTS_DOCUMENT (document));
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
- result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
gdata_documents_service_copy_document_async);
- g_simple_async_result_set_op_res_gpointer (result, g_object_ref (document), (GDestroyNotify)
g_object_unref);
- g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc) copy_document_thread,
G_PRIORITY_DEFAULT, cancellable);
- g_object_unref (result);
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, gdata_documents_service_copy_document_async);
+ g_task_set_task_data (task, g_object_ref (document), (GDestroyNotify) g_object_unref);
+ g_task_run_in_thread (task, copy_document_thread);
}
/**
@@ -1166,23 +1149,13 @@ gdata_documents_service_copy_document_async (GDataDocumentsService *self, GDataD
GDataDocumentsDocument *
gdata_documents_service_copy_document_finish (GDataDocumentsService *self, GAsyncResult *async_result,
GError **error)
{
- GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (async_result);
- GDataDocumentsDocument *new_document;
-
g_return_val_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self), NULL);
g_return_val_if_fail (G_IS_ASYNC_RESULT (async_result), NULL);
- g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
- g_warn_if_fail (g_simple_async_result_get_source_tag (result) ==
gdata_documents_service_copy_document_async);
-
- if (g_simple_async_result_propagate_error (result, error) == TRUE) {
- return NULL;
- }
-
- new_document = g_simple_async_result_get_op_res_gpointer (result);
- g_assert (GDATA_IS_DOCUMENTS_DOCUMENT (new_document));
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (g_task_is_valid (async_result, self), NULL);
+ g_return_val_if_fail (g_async_result_is_tagged (async_result,
gdata_documents_service_copy_document_async), NULL);
- return new_document;
+ return g_task_propagate_pointer (G_TASK (async_result), error);
}
/**
@@ -1301,24 +1274,19 @@ add_entry_to_folder_data_free (AddEntryToFolderData *data)
}
static void
-add_entry_to_folder_thread (GSimpleAsyncResult *result, GDataDocumentsService *service, GCancellable
*cancellable)
+add_entry_to_folder_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable
*cancellable)
{
- GDataDocumentsEntry *updated_entry;
- AddEntryToFolderData *data;
- GError *error = NULL;
-
- data = g_simple_async_result_get_op_res_gpointer (result);
+ GDataDocumentsService *service = GDATA_DOCUMENTS_SERVICE (source_object);
+ g_autoptr(GDataDocumentsEntry) updated_entry = NULL;
+ AddEntryToFolderData *data = task_data;
+ g_autoptr(GError) error = NULL;
/* Add the entry to the folder and return */
updated_entry = gdata_documents_service_add_entry_to_folder (service, data->entry, data->folder,
cancellable, &error);
- if (error != NULL) {
- g_simple_async_result_set_from_error (result, error);
- g_error_free (error);
- return;
- }
-
- /* Return the updated entry */
- g_simple_async_result_set_op_res_gpointer (result, updated_entry, (GDestroyNotify) g_object_unref);
+ if (error != NULL)
+ g_task_return_error (task, g_steal_pointer (&error));
+ else
+ g_task_return_pointer (task, g_steal_pointer (&updated_entry), (GDestroyNotify)
g_object_unref);
}
/**
@@ -1344,7 +1312,7 @@ void
gdata_documents_service_add_entry_to_folder_async (GDataDocumentsService *self, GDataDocumentsEntry *entry,
GDataDocumentsFolder *folder,
GCancellable *cancellable, GAsyncReadyCallback callback,
gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_autoptr(GTask) task = NULL;
AddEntryToFolderData *data;
g_return_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self));
@@ -1356,10 +1324,10 @@ gdata_documents_service_add_entry_to_folder_async (GDataDocumentsService *self,
data->entry = g_object_ref (entry);
data->folder = g_object_ref (folder);
- result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
gdata_documents_service_add_entry_to_folder_async);
- g_simple_async_result_set_op_res_gpointer (result, data, (GDestroyNotify)
add_entry_to_folder_data_free);
- g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc) add_entry_to_folder_thread,
G_PRIORITY_DEFAULT, cancellable);
- g_object_unref (result);
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, gdata_documents_service_add_entry_to_folder_async);
+ g_task_set_task_data (task, g_steal_pointer (&data), (GDestroyNotify) add_entry_to_folder_data_free);
+ g_task_run_in_thread (task, add_entry_to_folder_thread);
}
/**
@@ -1377,23 +1345,13 @@ gdata_documents_service_add_entry_to_folder_async (GDataDocumentsService *self,
GDataDocumentsEntry *
gdata_documents_service_add_entry_to_folder_finish (GDataDocumentsService *self, GAsyncResult *async_result,
GError **error)
{
- GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (async_result);
- GDataDocumentsEntry *entry;
-
g_return_val_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self), NULL);
g_return_val_if_fail (G_IS_ASYNC_RESULT (async_result), NULL);
- g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
- g_warn_if_fail (g_simple_async_result_get_source_tag (result) ==
gdata_documents_service_add_entry_to_folder_async);
-
- if (g_simple_async_result_propagate_error (result, error) == TRUE)
- return NULL;
-
- entry = g_simple_async_result_get_op_res_gpointer (result);
- if (entry != NULL)
- return g_object_ref (entry);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (g_task_is_valid (async_result, self), NULL);
+ g_return_val_if_fail (g_async_result_is_tagged (async_result,
gdata_documents_service_add_entry_to_folder_async), NULL);
- g_assert_not_reached ();
+ return g_task_propagate_pointer (G_TASK (async_result), error);
}
/**
@@ -1477,23 +1435,19 @@ remove_entry_from_folder_data_free (RemoveEntryFromFolderData *data)
}
static void
-remove_entry_from_folder_thread (GSimpleAsyncResult *result, GDataDocumentsService *service, GCancellable
*cancellable)
+remove_entry_from_folder_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable
*cancellable)
{
- GDataDocumentsEntry *updated_entry;
- RemoveEntryFromFolderData *data;
- GError *error = NULL;
-
- data = g_simple_async_result_get_op_res_gpointer (result);
+ GDataDocumentsService *service = GDATA_DOCUMENTS_SERVICE (source_object);
+ g_autoptr(GDataDocumentsEntry) updated_entry = NULL;
+ RemoveEntryFromFolderData *data = task_data;
+ g_autoptr(GError) error = NULL;
/* Remove the entry from the folder and return */
updated_entry = gdata_documents_service_remove_entry_from_folder (service, data->entry, data->folder,
cancellable, &error);
- if (error != NULL) {
- g_simple_async_result_take_error (result, error);
- return;
- }
-
- /* Return the updated entry */
- g_simple_async_result_set_op_res_gpointer (result, updated_entry, (GDestroyNotify) g_object_unref);
+ if (error != NULL)
+ g_task_return_error (task, g_steal_pointer (&error));
+ else
+ g_task_return_pointer (task, g_steal_pointer (&updated_entry), g_object_unref);
}
/**
@@ -1519,7 +1473,7 @@ void
gdata_documents_service_remove_entry_from_folder_async (GDataDocumentsService *self, GDataDocumentsEntry
*entry, GDataDocumentsFolder *folder,
GCancellable *cancellable, GAsyncReadyCallback
callback, gpointer user_data)
{
- GSimpleAsyncResult *result;
+ g_autoptr(GTask) task = NULL;
RemoveEntryFromFolderData *data;
g_return_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self));
@@ -1531,10 +1485,10 @@ gdata_documents_service_remove_entry_from_folder_async (GDataDocumentsService *s
data->entry = g_object_ref (entry);
data->folder = g_object_ref (folder);
- result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
gdata_documents_service_remove_entry_from_folder_async);
- g_simple_async_result_set_op_res_gpointer (result, data, (GDestroyNotify)
remove_entry_from_folder_data_free);
- g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc)
remove_entry_from_folder_thread, G_PRIORITY_DEFAULT, cancellable);
- g_object_unref (result);
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, gdata_documents_service_remove_entry_from_folder_async);
+ g_task_set_task_data (task, g_steal_pointer (&data), (GDestroyNotify)
remove_entry_from_folder_data_free);
+ g_task_run_in_thread (task, remove_entry_from_folder_thread);
}
/**
@@ -1553,23 +1507,13 @@ gdata_documents_service_remove_entry_from_folder_async (GDataDocumentsService *s
GDataDocumentsEntry *
gdata_documents_service_remove_entry_from_folder_finish (GDataDocumentsService *self, GAsyncResult
*async_result, GError **error)
{
- GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (async_result);
- GDataDocumentsEntry *entry;
-
g_return_val_if_fail (GDATA_IS_DOCUMENTS_SERVICE (self), NULL);
g_return_val_if_fail (G_IS_ASYNC_RESULT (async_result), NULL);
- g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
- g_warn_if_fail (g_simple_async_result_get_source_tag (result) ==
gdata_documents_service_remove_entry_from_folder_async);
-
- if (g_simple_async_result_propagate_error (result, error) == TRUE)
- return NULL;
-
- entry = g_simple_async_result_get_op_res_gpointer (result);
- if (entry != NULL)
- return g_object_ref (entry);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (g_task_is_valid (async_result, self), NULL);
+ g_return_val_if_fail (g_async_result_is_tagged (async_result,
gdata_documents_service_remove_entry_from_folder_async), NULL);
- g_assert_not_reached ();
+ return g_task_propagate_pointer (G_TASK (async_result), error);
}
/* NOTE: query may be NULL. */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]