[evolution-data-server] Publicize immediate refresh function for EBookMetaBackend/ECalMetaBackend



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]