summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Reitter <treitter@gmail.com>2009-12-14 10:47:42 -0800
committerTravis Reitter <treitter@gmail.com>2009-12-14 11:16:11 -0800
commit630417dd8cf0e693955b0f424a51d22d84a452ad (patch)
tree2b38baf9b859bfc1d5dd0cd06862e0e44a44573d
parentc7f3d975bcf5397ecb00b5e710bf4f0fbf740165 (diff)
downloadevolution-data-server-630417dd8cf0e693955b0f424a51d22d84a452ad.tar.gz
Port remaining EBook D-Bus methods (authenticateUser, getChanges, cancelOperation) over to gdbus. These have less-complete testing than the previous ones.
-rw-r--r--addressbook/libebook/e-book.c48
-rw-r--r--addressbook/libebook/e-data-book-gdbus-bindings-common.h61
-rw-r--r--addressbook/libebook/e-data-book-gdbus-bindings.h124
3 files changed, 211 insertions, 22 deletions
diff --git a/addressbook/libebook/e-book.c b/addressbook/libebook/e-book.c
index 5c48b7e54..b2850a748 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 8ccb7498b..2c85b599d 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 d6ed01914..385b25810 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