[tracker/direct-access-update-fd-passing] GAsynResult-ize it all, squash
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/direct-access-update-fd-passing] GAsynResult-ize it all, squash
- Date: Wed, 21 Jul 2010 10:09:01 +0000 (UTC)
commit d832d5d35a92e4c359999e882498c4ebd5a7eb09
Author: Philip Van Hoof <philip codeminded be>
Date: Wed Jul 21 12:06:53 2010 +0200
GAsynResult-ize it all, squash
src/libtracker-bus/tracker-bus-fd-update.c | 65 ++++++++++++++-------------
1 files changed, 34 insertions(+), 31 deletions(-)
---
diff --git a/src/libtracker-bus/tracker-bus-fd-update.c b/src/libtracker-bus/tracker-bus-fd-update.c
index 25d30f7..7decd63 100644
--- a/src/libtracker-bus/tracker-bus-fd-update.c
+++ b/src/libtracker-bus/tracker-bus-fd-update.c
@@ -50,7 +50,7 @@ typedef struct {
FastOperationType operation_type;
GCancellable *cancellable;
DBusPendingCall *dbus_call;
- GAsyncReadyCallback callback;
+ GSimpleAsyncResult *res;
gpointer user_data;
} FastAsyncData;
@@ -86,6 +86,10 @@ fast_async_data_free (gpointer data)
dbus_connection_unref (fad->connection);
}
+ if (fad->res) {
+ /* Don't free, weak */
+ }
+
g_slice_free (FastAsyncData, fad);
}
}
@@ -119,6 +123,12 @@ unmarshal_hash_table (DBusMessageIter *iter)
}
static void
+free_inner_array (gpointer elem)
+{
+ g_ptr_array_free (elem, TRUE);
+}
+
+static void
sparql_update_fast_callback (DBusPendingCall *call,
void *user_data)
{
@@ -139,25 +149,12 @@ sparql_update_fast_callback (DBusPendingCall *call,
dbus_set_g_error (&error, &dbus_error);
dbus_error_free (&dbus_error);
- g_print ("TODO: callback error !\n");
-
- /*
- switch (fad->operation_type) {
- case FAST_UPDATE:
- case FAST_UPDATE_BATCH:
- (* fad->void_callback) (error, fad->user_data);
- break;
- case FAST_UPDATE_BLANK:
- (* fad->gptrarray_callback) (NULL, error, fad->user_data);
- break;
- default:
- g_assert_not_reached ();
- break;
- }
- */
+ g_simple_async_result_set_from_error (fad->res, error);
dbus_message_unref (reply);
+ g_simple_async_result_complete (fad->res);
+
fast_async_data_free (fad);
return;
@@ -167,14 +164,14 @@ sparql_update_fast_callback (DBusPendingCall *call,
switch (fad->operation_type) {
case FAST_UPDATE:
case FAST_UPDATE_BLANK:
- result = g_ptr_array_new ();
+ result = g_ptr_array_new_with_free_func (free_inner_array);
dbus_message_iter_init (reply, &iter);
dbus_message_iter_recurse (&iter, &subiter);
while (dbus_message_iter_get_arg_type (&subiter) != DBUS_TYPE_INVALID) {
GPtrArray *inner_array;
- inner_array = g_ptr_array_new ();
+ inner_array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_hash_table_unref);
g_ptr_array_add (result, inner_array);
dbus_message_iter_recurse (&subiter, &subsubiter);
@@ -186,9 +183,11 @@ sparql_update_fast_callback (DBusPendingCall *call,
dbus_message_iter_next (&subiter);
}
- g_print ("TODO: callback !\n");
+ g_simple_async_result_set_op_res_gpointer (fad->res, result, NULL);
+
+ g_simple_async_result_complete (fad->res);
-// (* fad->gptrarray_callback) (result, error, fad->user_data);
+ g_ptr_array_free (result, TRUE);
break;
default:
@@ -329,10 +328,10 @@ sparql_update_fast (DBusConnection *connection,
}
static void
-sparql_update_fast_async (DBusConnection *connection,
- const gchar *query,
- FastAsyncData *fad,
- GError **error)
+sparql_update_fast_async (DBusConnection *connection,
+ const gchar *query,
+ FastAsyncData *fad,
+ GError **error)
{
DBusPendingCall *call;
@@ -386,11 +385,12 @@ tracker_bus_fd_sparql_update_async (DBusGConnection *connection,
GError *error = NULL;
g_return_if_fail (query != NULL);
- g_return_if_fail (callback != NULL);
fad = fast_async_data_new (dbus_g_connection_get_connection (connection),
FAST_UPDATE, cancellable, user_data);
- fad->callback = callback;
+
+ fad->res = g_simple_async_result_new (G_OBJECT (connection), callback, user_data,
+ tracker_bus_fd_sparql_update_async);
sparql_update_fast_async (dbus_g_connection_get_connection (connection),
query, fad, &error);
@@ -398,6 +398,7 @@ tracker_bus_fd_sparql_update_async (DBusGConnection *connection,
if (error) {
g_critical ("Could not initiate update: %s", error->message);
g_error_free (error);
+ g_object_unref (fad->res);
fast_async_data_free (fad);
}
@@ -439,14 +440,14 @@ tracker_bus_fd_sparql_update_blank (DBusGConnection *connection,
return NULL;
}
- result = g_ptr_array_new ();
+ result = g_ptr_array_new_with_free_func (free_inner_array);
dbus_message_iter_init (reply, &iter);
dbus_message_iter_recurse (&iter, &subiter);
while (dbus_message_iter_get_arg_type (&subiter) != DBUS_TYPE_INVALID) {
GPtrArray *inner_array;
- inner_array = g_ptr_array_new ();
+ inner_array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_hash_table_destroy);
g_ptr_array_add (result, inner_array);
dbus_message_iter_recurse (&subiter, &subsubiter);
@@ -486,7 +487,9 @@ tracker_bus_fd_sparql_update_blank_async (DBusGConnection *connection,
cancellable,
user_data);
- fad->callback = callback;
+
+ fad->res = g_simple_async_result_new (G_OBJECT (connection), callback, user_data,
+ tracker_bus_fd_sparql_update_blank_async);
sparql_update_fast_async (dbus_g_connection_get_connection (connection),
query, fad, &error);
@@ -494,7 +497,7 @@ tracker_bus_fd_sparql_update_blank_async (DBusGConnection *connection,
if (error) {
g_critical ("Could not initiate update: %s", error->message);
g_error_free (error);
-
+ g_object_unref (fad->res);
fast_async_data_free (fad);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]