[empathy: 40/65] Make _accept/_reject real async methods



commit d20fcc3aedd0b76b3ea0307bb69324121f49b555
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Wed Aug 18 16:08:49 2010 +0200

    Make _accept/_reject real async methods

 libempathy/empathy-tls-certificate.c |   69 +++++++++++++++++++++++++++++----
 libempathy/empathy-tls-certificate.h |   17 +++++++-
 2 files changed, 74 insertions(+), 12 deletions(-)
---
diff --git a/libempathy/empathy-tls-certificate.c b/libempathy/empathy-tls-certificate.c
index a6ee3b9..d758b4c 100644
--- a/libempathy/empathy-tls-certificate.c
+++ b/libempathy/empathy-tls-certificate.c
@@ -153,7 +153,7 @@ tls_certificate_init_async (GAsyncInitable *initable,
   g_assert (priv->bus_name != NULL);
 
   priv->async_init_res = g_simple_async_result_new (G_OBJECT (self),
-      callback, user_data, NULL);
+      callback, user_data, empathy_tls_certificate_new_async);
   dbus = tp_dbus_daemon_dup (&error);
 
   if (error != NULL)
@@ -314,10 +314,17 @@ cert_proxy_accept_cb (TpProxy *proxy,
     gpointer user_data,
     GObject *weak_object)
 {
+  GSimpleAsyncResult *accept_result = user_data;
+
   DEBUG ("Callback for accept(), error %p", error);
 
   if (error != NULL)
-    DEBUG ("Error was %s", error->message);
+    {
+      DEBUG ("Error was %s", error->message);
+      g_simple_async_result_set_from_error (accept_result, error);
+    }
+
+  g_simple_async_result_complete (accept_result);
 }
 
 static void
@@ -326,10 +333,17 @@ cert_proxy_reject_cb (TpProxy *proxy,
     gpointer user_data,
     GObject *weak_object)
 {
+  GSimpleAsyncResult *reject_result = user_data;
+
   DEBUG ("Callback for reject(), error %p", error);
 
   if (error != NULL)
-    DEBUG ("Error was %s", error->message);
+    {
+      DEBUG ("Error was %s", error->message);
+      g_simple_async_result_set_from_error (reject_result, error);
+    }
+
+  g_simple_async_result_complete (reject_result);
 }
 
 static const gchar *
@@ -408,25 +422,48 @@ empathy_tls_certificate_new_finish (GAsyncResult *res,
 }
 
 void
-empathy_tls_certificate_accept (EmpathyTLSCertificate *self)
+empathy_tls_certificate_accept_async (EmpathyTLSCertificate *self,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
 {
+  GSimpleAsyncResult *accept_result;
   EmpathyTLSCertificatePriv *priv = GET_PRIV (self);
 
   g_assert (EMPATHY_IS_TLS_CERTIFICATE (self));
 
   DEBUG ("Accepting TLS certificate");
 
+  accept_result = g_simple_async_result_new (G_OBJECT (self),
+      callback, user_data, empathy_tls_certificate_accept_async);
+
   emp_cli_authentication_tls_certificate_call_accept (priv->proxy,
-      -1, cert_proxy_accept_cb, NULL, NULL, G_OBJECT (self));
+      -1, cert_proxy_accept_cb,
+      accept_result, g_object_unref,
+      G_OBJECT (self));
+}
+
+gboolean
+empathy_tls_certificate_accept_finish (EmpathyTLSCertificate *self,
+    GAsyncResult *result,
+    GError **error)
+{
+  if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result),
+          error))
+    return FALSE;
+
+  return TRUE;
 }
 
 void
-empathy_tls_certificate_reject (EmpathyTLSCertificate *self,
+empathy_tls_certificate_reject_async (EmpathyTLSCertificate *self,
     EmpTLSCertificateRejectReason reason,
-    gboolean user_requested)
+    gboolean user_requested,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
 {
   GHashTable *details;
   const gchar *dbus_error;
+  GSimpleAsyncResult *reject_result;
   EmpathyTLSCertificatePriv *priv = GET_PRIV (self);
 
   g_assert (EMPATHY_IS_TLS_CERTIFICATE (self));
@@ -436,14 +473,28 @@ empathy_tls_certificate_reject (EmpathyTLSCertificate *self,
   dbus_error = reject_reason_get_dbus_error (reason);
   details = tp_asv_new ("user-requested", G_TYPE_BOOLEAN, user_requested,
       NULL);
+  reject_result = g_simple_async_result_new (G_OBJECT (self),
+      callback, user_data, empathy_tls_certificate_reject_async);
 
   emp_cli_authentication_tls_certificate_call_reject (priv->proxy,
-      -1, reason, dbus_error, details,
-      cert_proxy_reject_cb, NULL, NULL, G_OBJECT (self));
+      -1, reason, dbus_error, details, cert_proxy_reject_cb,
+      reject_result, g_object_unref, G_OBJECT (self));
 
   g_hash_table_unref (details);
 }
 
+gboolean
+empathy_tls_certificate_reject_finish (EmpathyTLSCertificate *self,
+    GAsyncResult *result,
+    GError **error)
+{
+  if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result),
+          error))
+    return FALSE;
+
+  return TRUE;
+}
+
 static gsize
 get_exported_size (gnutls_x509_crt_t cert)
 {
diff --git a/libempathy/empathy-tls-certificate.h b/libempathy/empathy-tls-certificate.h
index 4bf5c18..3a606c6 100644
--- a/libempathy/empathy-tls-certificate.h
+++ b/libempathy/empathy-tls-certificate.h
@@ -66,10 +66,21 @@ void empathy_tls_certificate_new_async (const gchar *bus_name,
 EmpathyTLSCertificate * empathy_tls_certificate_new_finish (GAsyncResult * res,
     GError **error);
 
-void empathy_tls_certificate_accept (EmpathyTLSCertificate *self);
-void empathy_tls_certificate_reject (EmpathyTLSCertificate *self,
+void empathy_tls_certificate_accept_async (EmpathyTLSCertificate *self,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+gboolean empathy_tls_certificate_accept_finish (EmpathyTLSCertificate *self,
+    GAsyncResult *result,
+    GError **error);
+
+void empathy_tls_certificate_reject_async (EmpathyTLSCertificate *self,
     EmpTLSCertificateRejectReason reason,
-    gboolean user_requested);
+    gboolean user_requested,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+gboolean empathy_tls_certificate_reject_finish (EmpathyTLSCertificate *self,
+    GAsyncResult *result,
+    GError **error);
 
 void empathy_tls_certificate_store_ca (EmpathyTLSCertificate *self);
 



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