[evolution-data-server] Publicize immediate refresh function for EBookMetaBackend/ECalMetaBackend
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Publicize immediate refresh function for EBookMetaBackend/ECalMetaBackend
- Date: Tue, 6 Jun 2017 12:57:48 +0000 (UTC)
commit 762e9041f0a165f873641343db0ca033ca85506d
Author: Milan Crha <mcrha redhat com>
Date: Tue Jun 6 14:55:20 2017 +0200
Publicize immediate refresh function for EBookMetaBackend/ECalMetaBackend
.../libedata-book/e-book-meta-backend.c | 63 ++++++++++++++++----
.../libedata-book/e-book-meta-backend.h | 4 +
src/calendar/libedata-cal/e-cal-meta-backend.c | 63 ++++++++++++++++----
src/calendar/libedata-cal/e-cal-meta-backend.h | 3 +
4 files changed, 109 insertions(+), 24 deletions(-)
---
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.c
b/src/addressbook/libedata-book/e-book-meta-backend.c
index 6eaa951..4a8d1a8 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.c
+++ b/src/addressbook/libedata-book/e-book-meta-backend.c
@@ -736,26 +736,22 @@ ebmb_maybe_remove_from_cache (EBookMetaBackend *meta_backend,
return TRUE;
}
-static void
-ebmb_refresh_thread_func (EBookBackend *book_backend,
- gpointer user_data,
- GCancellable *cancellable,
- GError **error)
+static gboolean
+ebmb_refresh_internal_sync (EBookMetaBackend *meta_backend,
+ gboolean with_connection_error,
+ GCancellable *cancellable,
+ GError **error)
{
- EBookMetaBackend *meta_backend;
EBookCache *book_cache;
- gboolean success, repeat = TRUE, is_repeat = FALSE;
+ gboolean success = FALSE, repeat = TRUE, is_repeat = FALSE;
- g_return_if_fail (E_IS_BOOK_META_BACKEND (book_backend));
-
- meta_backend = E_BOOK_META_BACKEND (book_backend);
+ g_return_val_if_fail (E_IS_BOOK_META_BACKEND (meta_backend), FALSE);
if (g_cancellable_set_error_if_cancelled (cancellable, error))
goto done;
if (!e_backend_get_online (E_BACKEND (meta_backend)) ||
- !e_book_meta_backend_ensure_connected_sync (meta_backend, cancellable, NULL)) {
- /* Ignore connection errors here */
+ !e_book_meta_backend_ensure_connected_sync (meta_backend, cancellable, with_connection_error ?
error : NULL)) {
g_mutex_lock (&meta_backend->priv->property_lock);
meta_backend->priv->refresh_after_authenticate = TRUE;
g_mutex_unlock (&meta_backend->priv->property_lock);
@@ -818,6 +814,23 @@ ebmb_refresh_thread_func (EBookBackend *book_backend,
g_mutex_unlock (&meta_backend->priv->property_lock);
g_signal_emit (meta_backend, signals[REFRESH_COMPLETED], 0, NULL);
+
+ return success;
+}
+
+static void
+ebmb_refresh_thread_func (EBookBackend *book_backend,
+ gpointer user_data,
+ GCancellable *cancellable,
+ GError **error)
+{
+ EBookMetaBackend *meta_backend;
+
+ g_return_if_fail (E_IS_BOOK_META_BACKEND (book_backend));
+
+ meta_backend = E_BOOK_META_BACKEND (book_backend);
+
+ ebmb_refresh_internal_sync (meta_backend, FALSE, cancellable, error);
}
static void
@@ -2955,6 +2968,9 @@ e_book_meta_backend_empty_cache_sync (EBookMetaBackend *meta_backend,
* Schedules refresh of the content of the @meta_backend. If there's any
* already scheduled, then the function does nothing.
*
+ * Use e_book_meta_backend_refresh_sync() to refresh the @meta_backend
+ * immediately.
+ *
* Since: 3.26
**/
void
@@ -2984,6 +3000,29 @@ e_book_meta_backend_schedule_refresh (EBookMetaBackend *meta_backend)
}
/**
+ * e_book_meta_backend_refresh_sync:
+ * @meta_backend: an #EBookMetaBackend
+ * @cancellable: optional #GCancellable object, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Refreshes the @meta_backend immediately. To just schedule refresh
+ * operation call e_book_meta_backend_schedule_refresh().
+ *
+ * Returns: Whether succeeded.
+ *
+ * Since: 3.26
+ **/
+gboolean
+e_book_meta_backend_refresh_sync (EBookMetaBackend *meta_backend,
+ GCancellable *cancellable,
+ GError **error)
+{
+ g_return_val_if_fail (E_IS_BOOK_META_BACKEND (meta_backend), FALSE);
+
+ return ebmb_refresh_internal_sync (meta_backend, TRUE, cancellable, error);
+}
+
+/**
* e_book_meta_backend_ensure_connected_sync:
* @meta_backend: an #EBookMetaBackend
* @cancellable: optional #GCancellable object, or %NULL
diff --git a/src/addressbook/libedata-book/e-book-meta-backend.h
b/src/addressbook/libedata-book/e-book-meta-backend.h
index 067683c..4e82724 100644
--- a/src/addressbook/libedata-book/e-book-meta-backend.h
+++ b/src/addressbook/libedata-book/e-book-meta-backend.h
@@ -204,6 +204,10 @@ gboolean e_book_meta_backend_empty_cache_sync
GError **error);
void e_book_meta_backend_schedule_refresh
(EBookMetaBackend *meta_backend);
+gboolean e_book_meta_backend_refresh_sync
+ (EBookMetaBackend *meta_backend,
+ GCancellable *cancellable,
+ GError **error);
gboolean e_book_meta_backend_ensure_connected_sync
(EBookMetaBackend *meta_backend,
GCancellable *cancellable,
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index 30884fb..b87c9f5 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -630,26 +630,22 @@ ecmb_maybe_remove_from_cache (ECalMetaBackend *meta_backend,
return TRUE;
}
-static void
-ecmb_refresh_thread_func (ECalBackend *cal_backend,
- gpointer user_data,
- GCancellable *cancellable,
- GError **error)
+static gboolean
+ecmb_refresh_internal_sync (ECalMetaBackend *meta_backend,
+ gboolean with_connection_error,
+ GCancellable *cancellable,
+ GError **error)
{
- ECalMetaBackend *meta_backend;
ECalCache *cal_cache;
- gboolean success, repeat = TRUE, is_repeat = FALSE;
-
- g_return_if_fail (E_IS_CAL_META_BACKEND (cal_backend));
+ gboolean success = FALSE, repeat = TRUE, is_repeat = FALSE;
- meta_backend = E_CAL_META_BACKEND (cal_backend);
+ g_return_val_if_fail (E_IS_CAL_META_BACKEND (meta_backend), FALSE);
if (g_cancellable_set_error_if_cancelled (cancellable, error))
goto done;
if (!e_backend_get_online (E_BACKEND (meta_backend)) ||
- !e_cal_meta_backend_ensure_connected_sync (meta_backend, cancellable, NULL)) {
- /* Ignore connection errors here */
+ !e_cal_meta_backend_ensure_connected_sync (meta_backend, cancellable, with_connection_error ?
error : NULL)) {
g_mutex_lock (&meta_backend->priv->property_lock);
meta_backend->priv->refresh_after_authenticate = TRUE;
g_mutex_unlock (&meta_backend->priv->property_lock);
@@ -712,6 +708,23 @@ ecmb_refresh_thread_func (ECalBackend *cal_backend,
g_mutex_unlock (&meta_backend->priv->property_lock);
g_signal_emit (meta_backend, signals[REFRESH_COMPLETED], 0, NULL);
+
+ return success;
+}
+
+static void
+ecmb_refresh_thread_func (ECalBackend *cal_backend,
+ gpointer user_data,
+ GCancellable *cancellable,
+ GError **error)
+{
+ ECalMetaBackend *meta_backend;
+
+ g_return_if_fail (E_IS_CAL_META_BACKEND (cal_backend));
+
+ meta_backend = E_CAL_META_BACKEND (cal_backend);
+
+ ecmb_refresh_internal_sync (meta_backend, FALSE, cancellable, error);
}
static void
@@ -3792,6 +3805,9 @@ e_cal_meta_backend_empty_cache_sync (ECalMetaBackend *meta_backend,
* Schedules refresh of the content of the @meta_backend. If there's any
* already scheduled, then the function does nothing.
*
+ * Use e_cal_meta_backend_refresh_sync() to refresh the @meta_backend
+ * immediately.
+ *
* Since: 3.26
**/
void
@@ -3821,6 +3837,29 @@ e_cal_meta_backend_schedule_refresh (ECalMetaBackend *meta_backend)
}
/**
+ * e_cal_meta_backend_refresh_sync:
+ * @meta_backend: an #ECalMetaBackend
+ * @cancellable: optional #GCancellable object, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Refreshes the @meta_backend immediately. To just schedule refresh
+ * operation call e_cal_meta_backend_schedule_refresh().
+ *
+ * Returns: Whether succeeded.
+ *
+ * Since: 3.26
+ **/
+gboolean
+e_cal_meta_backend_refresh_sync (ECalMetaBackend *meta_backend,
+ GCancellable *cancellable,
+ GError **error)
+{
+ g_return_val_if_fail (E_IS_CAL_META_BACKEND (meta_backend), FALSE);
+
+ return ecmb_refresh_internal_sync (meta_backend, TRUE, cancellable, error);
+}
+
+/**
* e_cal_meta_backend_ensure_connected_sync:
* @meta_backend: an #ECalMetaBackend
* @cancellable: optional #GCancellable object, or %NULL
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.h b/src/calendar/libedata-cal/e-cal-meta-backend.h
index 76cdca5..c8dd2a5 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.h
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.h
@@ -211,6 +211,9 @@ gboolean e_cal_meta_backend_empty_cache_sync
GError **error);
void e_cal_meta_backend_schedule_refresh
(ECalMetaBackend *meta_backend);
+gboolean e_cal_meta_backend_refresh_sync (ECalMetaBackend *meta_backend,
+ GCancellable *cancellable,
+ GError **error);
gboolean e_cal_meta_backend_ensure_connected_sync
(ECalMetaBackend *meta_backend,
GCancellable *cancellable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]