diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2010-08-18 22:08:49 +0800 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2010-08-19 01:18:55 +0800 |
commit | d20fcc3aedd0b76b3ea0307bb69324121f49b555 (patch) | |
tree | deb1589324dd254a16f7cc9615e4a21fe5a3e6dc /libempathy/empathy-tls-certificate.c | |
parent | 92c282488352fd9067fdfbd1d9e96b668a2ff19c (diff) | |
download | gsoc2013-empathy-d20fcc3aedd0b76b3ea0307bb69324121f49b555.tar gsoc2013-empathy-d20fcc3aedd0b76b3ea0307bb69324121f49b555.tar.gz gsoc2013-empathy-d20fcc3aedd0b76b3ea0307bb69324121f49b555.tar.bz2 gsoc2013-empathy-d20fcc3aedd0b76b3ea0307bb69324121f49b555.tar.lz gsoc2013-empathy-d20fcc3aedd0b76b3ea0307bb69324121f49b555.tar.xz gsoc2013-empathy-d20fcc3aedd0b76b3ea0307bb69324121f49b555.tar.zst gsoc2013-empathy-d20fcc3aedd0b76b3ea0307bb69324121f49b555.zip |
Make _accept/_reject real async methods
Diffstat (limited to 'libempathy/empathy-tls-certificate.c')
-rw-r--r-- | libempathy/empathy-tls-certificate.c | 69 |
1 files changed, 60 insertions, 9 deletions
diff --git a/libempathy/empathy-tls-certificate.c b/libempathy/empathy-tls-certificate.c index a6ee3b966..d758b4c48 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) { |