[evolution-data-server] Update ESource's connection-status in EBookMetaBackend/ECalMetaBackend
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Update ESource's connection-status in EBookMetaBackend/ECalMetaBackend
- Date: Tue, 13 Jun 2017 15:17:07 +0000 (UTC)
commit 203e223c9ed3872ff0b41ca284c6d6483566f369
Author: Milan Crha <mcrha redhat com>
Date: Tue Jun 13 17:13:08 2017 +0200
Update ESource's connection-status in EBookMetaBackend/ECalMetaBackend
Apart of other things it's needed for e_book_client_connect() and
e_cal_client_connect() to work properly with respect of
the wait_for_connected_seconds argument.
.../libedata-book/e-book-meta-backend.c | 17 +++++++++++++++++
src/calendar/libedata-cal/e-cal-meta-backend.c | 16 ++++++++++++++++
2 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c
b/src/addressbook/libedata-book/e-book-meta-backend.c
index 4a8d1a8..4795b37 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.c
+++ b/src/addressbook/libedata-book/e-book-meta-backend.c
@@ -1969,15 +1969,22 @@ ebmb_authenticate_sync (EBackend *backend,
}
g_mutex_lock (&meta_backend->priv->connect_lock);
+
+ e_source_set_connection_status (e_backend_get_source (backend),
E_SOURCE_CONNECTION_STATUS_CONNECTING);
+
success = e_book_meta_backend_connect_sync (meta_backend, credentials, &auth_result,
out_certificate_pem, out_certificate_errors, cancellable, error);
if (success) {
ebmb_update_connection_values (meta_backend);
auth_result = E_SOURCE_AUTHENTICATION_ACCEPTED;
+
+ e_source_set_connection_status (e_backend_get_source (backend),
E_SOURCE_CONNECTION_STATUS_CONNECTED);
} else {
if (auth_result == E_SOURCE_AUTHENTICATION_UNKNOWN)
auth_result = E_SOURCE_AUTHENTICATION_ERROR;
+
+ e_source_set_connection_status (e_backend_get_source (backend),
E_SOURCE_CONNECTION_STATUS_DISCONNECTED);
}
g_mutex_unlock (&meta_backend->priv->connect_lock);
@@ -3040,6 +3047,7 @@ e_book_meta_backend_ensure_connected_sync (EBookMetaBackend *meta_backend,
GError **error)
{
ENamedParameters *credentials;
+ ESource *source;
ESourceAuthenticationResult auth_result = E_SOURCE_AUTHENTICATION_UNKNOWN;
ESourceCredentialsReason creds_reason = E_SOURCE_CREDENTIALS_REASON_ERROR;
gchar *certificate_pem = NULL;
@@ -3060,15 +3068,24 @@ e_book_meta_backend_ensure_connected_sync (EBookMetaBackend *meta_backend,
g_mutex_unlock (&meta_backend->priv->property_lock);
g_mutex_lock (&meta_backend->priv->connect_lock);
+
+ source = e_backend_get_source (E_BACKEND (meta_backend));
+
+ if (e_source_get_connection_status (source) != E_SOURCE_CONNECTION_STATUS_CONNECTED)
+ e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_CONNECTING);
+
if (e_book_meta_backend_connect_sync (meta_backend, credentials, &auth_result, &certificate_pem,
&certificate_errors,
cancellable, &local_error)) {
ebmb_update_connection_values (meta_backend);
+ e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_CONNECTED);
g_mutex_unlock (&meta_backend->priv->connect_lock);
e_named_parameters_free (credentials);
return TRUE;
}
+ e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_DISCONNECTED);
+
g_mutex_unlock (&meta_backend->priv->connect_lock);
e_named_parameters_free (credentials);
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index 1bf475a..8126351 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -2737,15 +2737,22 @@ ecmb_authenticate_sync (EBackend *backend,
}
g_mutex_lock (&meta_backend->priv->connect_lock);
+
+ e_source_set_connection_status (e_backend_get_source (backend),
E_SOURCE_CONNECTION_STATUS_CONNECTING);
+
success = e_cal_meta_backend_connect_sync (meta_backend, credentials, &auth_result,
out_certificate_pem, out_certificate_errors, cancellable, error);
if (success) {
ecmb_update_connection_values (meta_backend);
auth_result = E_SOURCE_AUTHENTICATION_ACCEPTED;
+
+ e_source_set_connection_status (e_backend_get_source (backend),
E_SOURCE_CONNECTION_STATUS_CONNECTED);
} else {
if (auth_result == E_SOURCE_AUTHENTICATION_UNKNOWN)
auth_result = E_SOURCE_AUTHENTICATION_ERROR;
+
+ e_source_set_connection_status (e_backend_get_source (backend),
E_SOURCE_CONNECTION_STATUS_DISCONNECTED);
}
g_mutex_unlock (&meta_backend->priv->connect_lock);
@@ -3901,6 +3908,7 @@ e_cal_meta_backend_ensure_connected_sync (ECalMetaBackend *meta_backend,
GError **error)
{
ENamedParameters *credentials;
+ ESource *source;
ESourceAuthenticationResult auth_result = E_SOURCE_AUTHENTICATION_UNKNOWN;
ESourceCredentialsReason creds_reason = E_SOURCE_CREDENTIALS_REASON_ERROR;
gchar *certificate_pem = NULL;
@@ -3922,15 +3930,23 @@ e_cal_meta_backend_ensure_connected_sync (ECalMetaBackend *meta_backend,
g_mutex_lock (&meta_backend->priv->connect_lock);
+ source = e_backend_get_source (E_BACKEND (meta_backend));
+
+ if (e_source_get_connection_status (source) != E_SOURCE_CONNECTION_STATUS_CONNECTED)
+ e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_CONNECTING);
+
if (e_cal_meta_backend_connect_sync (meta_backend, credentials, &auth_result, &certificate_pem,
&certificate_errors,
cancellable, &local_error)) {
ecmb_update_connection_values (meta_backend);
+ e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_CONNECTED);
g_mutex_unlock (&meta_backend->priv->connect_lock);
e_named_parameters_free (credentials);
return TRUE;
}
+ e_source_set_connection_status (source, E_SOURCE_CONNECTION_STATUS_DISCONNECTED);
+
g_mutex_unlock (&meta_backend->priv->connect_lock);
e_named_parameters_free (credentials);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]