[tracker] libtracker-miner: Implement ->end* vtable API for TrackerFileDataProvider
- From: Martyn James Russell <mr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-miner: Implement ->end* vtable API for TrackerFileDataProvider
- Date: Tue, 26 Aug 2014 16:56:50 +0000 (UTC)
commit 97e4794c0bff0136a89277d2e0b90d04531e90e0
Author: Martyn Russell <martyn lanedo com>
Date: Tue Aug 26 17:13:35 2014 +0100
libtracker-miner: Implement ->end* vtable API for TrackerFileDataProvider
src/libtracker-miner/tracker-file-data-provider.c | 70 ++++++++++++++++++++-
1 files changed, 69 insertions(+), 1 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-file-data-provider.c
b/src/libtracker-miner/tracker-file-data-provider.c
index 91047f4..8e72fbd 100644
--- a/src/libtracker-miner/tracker-file-data-provider.c
+++ b/src/libtracker-miner/tracker-file-data-provider.c
@@ -87,7 +87,7 @@ file_data_provider_get_crawl_flags (TrackerDataProvider *data_provider)
static void
file_data_provider_set_crawl_flags (TrackerDataProvider *data_provider,
- TrackerCrawlFlags flags)
+ TrackerCrawlFlags flags)
{
TrackerFileDataProvider *fe;
@@ -225,6 +225,71 @@ file_data_provider_begin_finish (TrackerDataProvider *data_provider,
return g_task_propagate_pointer (G_TASK (result), error);
}
+static gboolean
+file_data_provider_end (TrackerDataProvider *data_provider,
+ TrackerEnumerator *enumerator,
+ GCancellable *cancellable,
+ GError **error)
+{
+ if (g_cancellable_set_error_if_cancelled (cancellable, error)) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+file_data_provider_end_thread (GTask *task,
+ gpointer source_object,
+ gpointer task_data,
+ GCancellable *cancellable)
+{
+ TrackerDataProvider *data_provider = source_object;
+ TrackerEnumerator *enumerator = task_data;
+ GError *error = NULL;
+ gboolean success = FALSE;
+
+ if (!g_cancellable_set_error_if_cancelled (cancellable, &error)) {
+ success = file_data_provider_end (data_provider,
+ enumerator,
+ cancellable,
+ &error);
+ }
+
+ if (error) {
+ g_task_return_error (task, error);
+ } else {
+ g_task_return_boolean (task, success);
+ }
+}
+
+static void
+file_data_provider_end_async (TrackerDataProvider *data_provider,
+ TrackerEnumerator *enumerator,
+ int io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GTask *task;
+
+ task = g_task_new (data_provider, cancellable, callback, user_data);
+ g_task_set_task_data (task, g_object_ref (enumerator), (GDestroyNotify) g_object_unref);
+ g_task_set_priority (task, io_priority);
+ g_task_run_in_thread (task, file_data_provider_end_thread);
+ g_object_unref (task);
+}
+
+static gboolean
+file_data_provider_end_finish (TrackerDataProvider *data_provider,
+ GAsyncResult *result,
+ GError **error)
+{
+ g_return_val_if_fail (g_task_is_valid (result, data_provider), NULL);
+
+ return g_task_propagate_boolean (G_TASK (result), error);
+}
+
static void
tracker_file_data_provider_file_iface_init (TrackerDataProviderIface *iface)
{
@@ -233,6 +298,9 @@ tracker_file_data_provider_file_iface_init (TrackerDataProviderIface *iface)
iface->begin = file_data_provider_begin;
iface->begin_async = file_data_provider_begin_async;
iface->begin_finish = file_data_provider_begin_finish;
+ iface->end = file_data_provider_end;
+ iface->end_async = file_data_provider_end_async;
+ iface->end_finish = file_data_provider_end_finish;
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]