[evolution-data-server/treitter-client-gdbus] Port remaining EBook D-Bus methods (authenticateUser, getChanges, cancelOperation) over to gdbus. Th



commit 630417dd8cf0e693955b0f424a51d22d84a452ad
Author: Travis Reitter <treitter gmail com>
Date:   Mon Dec 14 10:47:42 2009 -0800

    Port remaining EBook D-Bus methods (authenticateUser, getChanges, cancelOperation) over to gdbus. These have less-complete testing than the previous ones.

 addressbook/libebook/e-book.c                      |   48 ++++----
 .../libebook/e-data-book-gdbus-bindings-common.h   |   61 ++++++++++
 addressbook/libebook/e-data-book-gdbus-bindings.h  |  124 ++++++++++++++++++++
 3 files changed, 211 insertions(+), 22 deletions(-)
---
diff --git a/addressbook/libebook/e-book.c b/addressbook/libebook/e-book.c
index 5c48b7e..b2850a7 100644
--- a/addressbook/libebook/e-book.c
+++ b/addressbook/libebook/e-book.c
@@ -32,8 +32,6 @@
 #include "e-contact.h"
 #include "e-book-view-private.h"
 #include "e-data-book-factory-gdbus-bindings.h"
-/* FIXME: cut this out */
-#include "e-data-book-bindings.h"
 #include "e-data-book-gdbus-bindings.h"
 #include "libedata-book/e-data-book-types.h"
 #include "e-book-marshal.h"
@@ -828,17 +826,19 @@ e_book_authenticate_user (EBook         *book,
 	GError *err = NULL;
 
 	e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
-	e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+	e_return_error_if_fail (book->priv->gdbus_proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
 
 	LOCK_CONN ();
-	org_gnome_evolution_dataserver_addressbook_Book_authenticate_user (book->priv->proxy, user, passwd, auth_method, &err);
+	e_data_book_gdbus_authenticate_user_sync (book->priv->gdbus_proxy, user, passwd, auth_method, &err);
 	UNLOCK_CONN ();
 
 	return unwrap_gerror (err, error);
 }
 
 static void
-authenticate_user_reply(DBusGProxy *proxy, GError *error, gpointer user_data)
+authenticate_user_reply (GDBusProxy *proxy,
+			 GError     *error,
+			 gpointer    user_data)
 {
 	AsyncData *data = user_data;
 	EBookCallback cb = data->callback;
@@ -867,17 +867,17 @@ authenticate_user_reply(DBusGProxy *proxy, GError *error, gpointer user_data)
  * Return value: %FALSE if successful, %TRUE otherwise.
  **/
 guint
-e_book_async_authenticate_user (EBook                 *book,
-				const gchar            *user,
-				const gchar            *passwd,
-				const gchar            *auth_method,
-				EBookCallback         cb,
-				gpointer              closure)
+e_book_async_authenticate_user (EBook         *book,
+				const gchar   *user,
+				const gchar   *passwd,
+				const gchar   *auth_method,
+				EBookCallback  cb,
+				gpointer       closure)
 {
 	AsyncData *data;
 
 	e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
-	e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+	e_return_async_error_if_fail (book->priv->gdbus_proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
 	e_return_async_error_if_fail (user, E_BOOK_ERROR_INVALID_ARG);
 	e_return_async_error_if_fail (passwd, E_BOOK_ERROR_INVALID_ARG);
 	e_return_async_error_if_fail (auth_method, E_BOOK_ERROR_INVALID_ARG);
@@ -888,7 +888,7 @@ e_book_async_authenticate_user (EBook                 *book,
 	data->closure = closure;
 
 	LOCK_CONN ();
-	org_gnome_evolution_dataserver_addressbook_Book_authenticate_user_async (book->priv->proxy, user, passwd, auth_method, authenticate_user_reply, data);
+	e_data_book_gdbus_authenticate_user (book->priv->gdbus_proxy, user, passwd, auth_method, authenticate_user_reply, data);
 	UNLOCK_CONN ();
 
 	return 0;
@@ -1532,11 +1532,12 @@ e_book_get_changes (EBook       *book,
 	GPtrArray *array = NULL;
 
 	e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
-	e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+	e_return_error_if_fail (book->priv->gdbus_proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
 
 	LOCK_CONN ();
-	org_gnome_evolution_dataserver_addressbook_Book_get_changes (book->priv->proxy, changeid, &array, &err);
+	e_data_book_gdbus_get_changes_sync (book->priv->gdbus_proxy, changeid, &array, &err);
 	UNLOCK_CONN ();
+
 	if (!err) {
 		*changes = parse_changes_array (array);
 		return TRUE;
@@ -1546,7 +1547,10 @@ e_book_get_changes (EBook       *book,
 }
 
 static void
-get_changes_reply (DBusGProxy *proxy, GPtrArray *changes, GError *error, gpointer user_data)
+get_changes_reply (GDBusProxy *proxy,
+		   GPtrArray  *changes,
+		   GError     *error,
+		   gpointer    user_data)
 {
 	AsyncData *data = user_data;
 	EBookListCallback cb = data->callback;
@@ -1583,7 +1587,7 @@ e_book_async_get_changes (EBook             *book,
 	AsyncData *data;
 
 	e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
-	e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+	e_return_async_error_val_if_fail (book->priv->gdbus_proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
 
 	data = g_slice_new0 (AsyncData);
 	data->book = g_object_ref (book);
@@ -1591,7 +1595,7 @@ e_book_async_get_changes (EBook             *book,
 	data->closure = closure;
 
 	LOCK_CONN ();
-	org_gnome_evolution_dataserver_addressbook_Book_get_changes_async (book->priv->proxy, changeid, get_changes_reply, data);
+	e_data_book_gdbus_get_changes (book->priv->gdbus_proxy, changeid, get_changes_reply, data);
 	UNLOCK_CONN ();
 
 	return 0;
@@ -1641,10 +1645,10 @@ e_book_cancel (EBook   *book,
 	gboolean res;
 
 	e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
-	e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+	e_return_error_if_fail (book->priv->gdbus_proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
 
 	LOCK_CONN ();
-	res = org_gnome_evolution_dataserver_addressbook_Book_cancel_operation (book->priv->proxy, error);
+	res = e_data_book_gdbus_cancel_operation_sync (book->priv->gdbus_proxy, error);
 	UNLOCK_CONN ();
 
 	return res;
@@ -1661,10 +1665,10 @@ e_book_cancel_async_op (EBook *book, GError **error)
 	gboolean res;
 
 	e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
-	e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+	e_return_error_if_fail (book->priv->gdbus_proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
 
 	LOCK_CONN ();
-	res = org_gnome_evolution_dataserver_addressbook_Book_cancel_operation (book->priv->proxy, error);
+	res = e_data_book_gdbus_cancel_operation_sync (book->priv->gdbus_proxy, error);
 	UNLOCK_CONN ();
 
 	return res;
diff --git a/addressbook/libebook/e-data-book-gdbus-bindings-common.h b/addressbook/libebook/e-data-book-gdbus-bindings-common.h
index 8ccb749..2c85b59 100644
--- a/addressbook/libebook/e-data-book-gdbus-bindings-common.h
+++ b/addressbook/libebook/e-data-book-gdbus-bindings-common.h
@@ -123,6 +123,62 @@ demarshal_retvals__STRINGVECTOR (GVariant *retvals, char ***OUT_strv1)
         return success;
 }
 
+static gboolean
+demarshal_retvals__GPTRARRAY_with_GVALUEARRAY_with_UINT_STRING_endwith_endwith
+	(GVariant   *retvals,
+	 GPtrArray **OUT_ptrarray1)
+{
+        gboolean success = TRUE;
+
+        if (retvals) {
+                GVariant *array1_variant;
+		GVariantIter iter1;
+                GPtrArray *ptrarray1 = NULL;
+		const guint uint1_tmp;
+		const char *string1_tmp = NULL;
+
+		/* deshelling a (a(us)); there should always be exactly one
+		 * a(us) in the outermost tuple */
+                array1_variant = g_variant_get_child_value (retvals, 0);
+		g_variant_iter_init (&iter1, array1_variant);
+
+		/* return NULL instead of an empty GPtrArray* if there's nothing
+		 * to put in it */
+		if (g_variant_n_children (array1_variant) < 1) {
+			goto empty_inner_array;
+		}
+
+		ptrarray1 = g_ptr_array_new ();
+
+		while (g_variant_iter_next (&iter1, "(us)", &uint1_tmp, &string1_tmp)) {
+			GValueArray *valuearray = NULL;
+			GValue uint_value1 = {0};
+			GValue string_value1 = {0};
+
+			valuearray = g_value_array_new (2);
+			g_value_init (&uint_value1, G_TYPE_UINT);
+			g_value_init (&string_value1, G_TYPE_STRING);
+
+			g_value_set_uint (&uint_value1, uint1_tmp);
+			g_value_set_string (&string_value1, string1_tmp);
+
+			g_value_array_append (valuearray, &uint_value1);
+			g_value_array_append (valuearray, &string_value1);
+			g_ptr_array_add (ptrarray1, valuearray);
+		}
+
+empty_inner_array:
+		*OUT_ptrarray1 = ptrarray1;
+
+                g_variant_unref (retvals);
+        } else {
+                success = FALSE;
+        }
+
+        return success;
+}
+
+
 typedef void (*reply__VOID) (GDBusProxy *proxy,
                              GError     *error,
                              gpointer    user_data);
@@ -142,4 +198,9 @@ typedef void (*reply__STRINGVECTOR) (GDBusProxy  *proxy,
                                      GError      *error,
                                      gpointer     user_data);
 
+typedef void (*reply__GPTRARRAY_with_GVALUEARRAY_with_UINT_STRING_endwith_endwith) (GDBusProxy *proxy,
+    GPtrArray  *OUT_ptrarray1,
+    GError     *error,
+    gpointer    user_data);
+
 #endif /* _E_DATA_BOOK_GDBUS_BINDINGS_COMMON_H */
diff --git a/addressbook/libebook/e-data-book-gdbus-bindings.h b/addressbook/libebook/e-data-book-gdbus-bindings.h
index d6ed019..385b258 100644
--- a/addressbook/libebook/e-data-book-gdbus-bindings.h
+++ b/addressbook/libebook/e-data-book-gdbus-bindings.h
@@ -97,6 +97,62 @@ e_data_book_gdbus_close_sync (GDBusProxy      *proxy,
 }
 
 static gboolean
+e_data_book_gdbus_authenticate_user_sync (GDBusProxy  *proxy,
+					  const char  *IN_user,
+					  const char  *IN_passwd,
+					  const char  *IN_auth_method,
+					  GError     **error)
+{
+	GVariant *parameters;
+	GVariant *retvals;
+
+	parameters = g_variant_new ("(sss)", IN_user, IN_passwd, IN_auth_method);
+	retvals = g_dbus_proxy_invoke_method_sync (proxy, "authenticateUser", parameters, -1, NULL, error);
+
+	return demarshal_retvals__VOID (retvals);
+}
+
+static void
+authenticate_user_cb (GDBusProxy   *proxy,
+		      GAsyncResult *result,
+		      gpointer      user_data)
+{
+	Closure *closure = user_data;
+	GVariant *retvals;
+	GError *error = NULL;
+
+	retvals = g_dbus_proxy_invoke_method_finish (proxy, result, &error);
+	if (retvals) {
+		if (!demarshal_retvals__VOID (retvals)) {
+			error = g_error_new (E_BOOK_ERROR, E_BOOK_ERROR_CORBA_EXCEPTION, "demarshalling results for Book method 'authenticateUser'");
+		}
+	}
+
+	(*(reply__VOID)closure->cb) (proxy, error, closure->user_data);
+	closure_free (closure);
+}
+
+static void
+e_data_book_gdbus_authenticate_user (GDBusProxy  *proxy,
+				     const char  *IN_user,
+				     const char  *IN_passwd,
+				     const char  *IN_auth_method,
+				     reply__VOID  callback,
+				     gpointer     user_data)
+{
+	GVariant *parameters;
+	Closure *closure;
+
+	parameters = g_variant_new ("(sss)", IN_user, IN_passwd, IN_auth_method);
+
+	closure = g_slice_new (Closure);
+	closure->cb = G_CALLBACK (callback);
+	closure->user_data = user_data;
+
+	g_dbus_proxy_invoke_method (proxy, "authenticateUser", parameters, -1, NULL, (GAsyncReadyCallback) authenticate_user_cb, closure);
+}
+
+static gboolean
 e_data_book_gdbus_remove_sync (GDBusProxy  *proxy,
 			       GError     **error)
 {
@@ -642,4 +698,72 @@ e_data_book_gdbus_get_book_view (GDBusProxy    *proxy,
         g_dbus_proxy_invoke_method (proxy, "getBookView", parameters, -1, NULL, (GAsyncReadyCallback) get_book_view_cb, closure);
 }
 
+static gboolean
+e_data_book_gdbus_cancel_operation_sync (GDBusProxy  *proxy,
+					 GError     **error)
+{
+	GVariant *parameters;
+	GVariant *retvals;
+
+	parameters = g_variant_new ("()");
+	retvals = g_dbus_proxy_invoke_method_sync (proxy, "cancelOperation", parameters, -1, NULL, error);
+
+	return demarshal_retvals__VOID (retvals);
+}
+
+static gboolean
+e_data_book_gdbus_get_changes_sync (GDBusProxy  *proxy,
+				    const char  *IN_change_id,
+				    GPtrArray  **OUT_changes,
+				    GError     **error)
+{
+	GVariant *parameters;
+	GVariant *retvals;
+
+	parameters = g_variant_new ("(s)", IN_change_id);
+	retvals = g_dbus_proxy_invoke_method_sync (proxy, "getChanges", parameters, -1, NULL, error);
+
+	return demarshal_retvals__GPTRARRAY_with_GVALUEARRAY_with_UINT_STRING_endwith_endwith (retvals, OUT_changes);
+}
+
+static void
+get_changes_cb (GDBusProxy *proxy,
+		GAsyncResult *result,
+		gpointer user_data)
+{
+        Closure *closure = user_data;
+        GVariant *retvals;
+        GError *error = NULL;
+        GPtrArray *OUT_changes = NULL;
+
+        retvals = g_dbus_proxy_invoke_method_finish (proxy, result, &error);
+        if (retvals) {
+                if (!demarshal_retvals__GPTRARRAY_with_GVALUEARRAY_with_UINT_STRING_endwith_endwith (retvals, &OUT_changes)) {
+                        error = g_error_new (E_BOOK_ERROR, E_BOOK_ERROR_CORBA_EXCEPTION, "demarshalling results for Book method 'getChanges'");
+                }
+        }
+
+        (*(reply__GPTRARRAY_with_GVALUEARRAY_with_UINT_STRING_endwith_endwith) closure->cb) (proxy, OUT_changes, error, closure->user_data);
+        closure_free (closure);
+}
+
+static void
+e_data_book_gdbus_get_changes (GDBusProxy    *proxy,
+			       const char    *IN_change_id,
+			       reply__GPTRARRAY_with_GVALUEARRAY_with_UINT_STRING_endwith_endwith  callback,
+			       gpointer       user_data)
+{
+        GVariant *parameters;
+        Closure *closure;
+
+	parameters = g_variant_new ("(s)", IN_change_id);
+
+        closure = g_slice_new (Closure);
+        closure->cb = G_CALLBACK (callback);
+        closure->user_data = user_data;
+
+        g_dbus_proxy_invoke_method (proxy, "getChanges", parameters, -1, NULL, (GAsyncReadyCallback) get_changes_cb, closure);
+}
+
+
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]