[tracker/wip/passive-extraction: 3/12] miner-fs: Remove code that calls tracker extract
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/passive-extraction: 3/12] miner-fs: Remove code that calls tracker extract
- Date: Tue, 7 Jan 2014 22:47:01 +0000 (UTC)
commit b9e7c36045d1864131f103f47cff07a9362d5a74
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Jan 3 02:08:43 2014 +0100
miner-fs: Remove code that calls tracker extract
Tracker-extract is going to be meant to listen for GraphUpdated
signals, so no direct communication between tracker-miner-fs and
tracker-extract would be necessary.
src/miners/fs/tracker-miner-files.c | 238 +----------------------------------
1 files changed, 5 insertions(+), 233 deletions(-)
---
diff --git a/src/miners/fs/tracker-miner-files.c b/src/miners/fs/tracker-miner-files.c
index 17081f2..0aaab53 100644
--- a/src/miners/fs/tracker-miner-files.c
+++ b/src/miners/fs/tracker-miner-files.c
@@ -100,11 +100,7 @@ struct TrackerMinerFilesPrivate {
guint stale_volumes_check_id;
- guint failed_extraction_pause_cookie;
GList *extraction_queue;
- GList *failed_extraction_queue;
-
- gboolean failsafe_extraction;
};
enum {
@@ -205,8 +201,6 @@ static void miner_files_add_removable_or_optical_directory (TrackerMinerF
const gchar *mount_path,
const gchar *uuid);
-static void extractor_process_failsafe (TrackerMinerFiles *miner);
-
static void miner_files_update_filters (TrackerMinerFiles *files);
@@ -655,7 +649,6 @@ miner_files_finalize (GObject *object)
}
g_list_free (priv->extraction_queue);
- g_list_free (priv->failed_extraction_queue);
G_OBJECT_CLASS (tracker_miner_files_parent_class)->finalize (object);
}
@@ -2078,215 +2071,6 @@ sparql_builder_finish (ProcessFileData *data,
}
static void
-extractor_get_failsafe_metadata_cb (GObject *object,
- GAsyncResult *res,
- gpointer user_data)
-{
- ProcessFileData *data = user_data;
- TrackerMinerFiles *miner = data->miner;
- TrackerMinerFilesPrivate *priv = miner->private;
- const gchar *preupdate, *postupdate, *sparql, *where;
- TrackerExtractInfo *info;
- GError *error = NULL;
- gchar *uri;
-
- info = tracker_extract_client_get_metadata_finish (G_FILE (object), res, &error);
- preupdate = postupdate = sparql = where = NULL;
-
- if (error) {
- GStrv types;
-
- uri = g_file_get_uri (data->file);
- g_warning (" Got second extraction DBus error on '%s'. "
- "Adding only non-embedded metadata to the SparQL, "
- "the error was: %s",
- uri, error->message);
- g_error_free (error);
- g_free (uri);
-
- types = tracker_extract_module_manager_get_fallback_rdf_types (data->mime_type);
-
- if (types && types[0] != NULL) {
- guint i;
- GString *str = g_string_new (" a ");
- for (i = 0; types[i] != NULL; i++) {
- if (i != 0) {
- g_string_append_c (str, ',');
- }
- g_string_append (str, types[i]);
- }
- g_string_append (str, " .");
- sparql = g_string_free (str, FALSE);
- }
-
- g_strfreev (types);
-
- } else {
- TrackerSparqlBuilder *builder;
-
- g_debug (" Extraction succeeded the second time");
-
- builder = tracker_extract_info_get_preupdate_builder (info);
- preupdate = tracker_sparql_builder_get_result (builder);
-
- builder = tracker_extract_info_get_postupdate_builder (info);
- postupdate = tracker_sparql_builder_get_result (builder);
-
- builder = tracker_extract_info_get_metadata_builder (info);
- sparql = tracker_sparql_builder_get_result (builder);
-
- where = tracker_extract_info_get_where_clause (info);
- }
-
- sparql_builder_finish (data, preupdate, postupdate, sparql, where);
-
- /* Notify success even if the extraction failed
- * again, so we get the essential data in the store.
- */
- tracker_miner_fs_file_notify (TRACKER_MINER_FS (miner), data->file, NULL);
-
- priv->failed_extraction_queue = g_list_remove (priv->failed_extraction_queue, data);
- process_file_data_free (data);
-
- /* Get on to the next failed extraction, or resume miner */
- extractor_process_failsafe (miner);
-}
-
-/* This function processes failed files one by one,
- * the function will be called after each operation
- * is finished, so elements are processed linearly.
- */
-static void
-extractor_process_failsafe (TrackerMinerFiles *miner)
-{
- TrackerMinerFilesPrivate *priv;
- ProcessFileData *data;
-
- priv = miner->private;
-
- if (priv->failed_extraction_queue) {
- gchar *uri;
-
- data = priv->failed_extraction_queue->data;
-
- uri = g_file_get_uri (data->file);
- g_message ("Performing failsafe extraction on '%s'", uri);
- g_free (uri);
-
- tracker_extract_client_get_metadata (data->file,
- data->mime_type,
- TRACKER_MINER_FS_GRAPH_URN,
- data->cancellable,
- extractor_get_failsafe_metadata_cb,
- data);
- } else {
- g_debug ("Failsafe extraction finished. Resuming miner...");
-
- if (priv->failed_extraction_pause_cookie != 0) {
- tracker_miner_resume (TRACKER_MINER (miner),
- priv->failed_extraction_pause_cookie,
- NULL);
-
- priv->failed_extraction_pause_cookie = 0;
- }
-
- priv->failsafe_extraction = FALSE;
- }
-}
-
-static void
-extractor_check_process_failsafe (TrackerMinerFiles *miner)
-{
- TrackerMinerFilesPrivate *priv;
-
- priv = miner->private;
-
- if (priv->failsafe_extraction) {
- /* already on failsafe extraction */
- return;
- }
-
- if (priv->extraction_queue ||
- !priv->failed_extraction_queue) {
- /* No reasons (yet) to start failsafe extraction */
- return;
- }
-
- priv->failsafe_extraction = TRUE;
- extractor_process_failsafe (miner);
-}
-
-static void
-extractor_get_embedded_metadata_cb (GObject *object,
- GAsyncResult *res,
- gpointer user_data)
-{
- TrackerMinerFilesPrivate *priv;
- TrackerMinerFiles *miner;
- ProcessFileData *data = user_data;
- TrackerSparqlBuilder *preupdate, *postupdate, *sparql;
- const gchar *where;
- TrackerExtractInfo *info;
- GError *error = NULL;
-
- miner = data->miner;
- priv = miner->private;
- priv->extraction_queue = g_list_remove (priv->extraction_queue, data);
- info = tracker_extract_client_get_metadata_finish (G_FILE (object), res, &error);
-
- if (error) {
- if (error->code == G_DBUS_ERROR_NO_REPLY ||
- error->code == G_DBUS_ERROR_TIMEOUT ||
- error->code == G_DBUS_ERROR_TIMED_OUT) {
- gchar *uri;
-
- uri = g_file_get_uri (data->file);
- g_warning (" Got extraction DBus error on '%s': %s", uri, error->message);
-
- if (priv->failed_extraction_pause_cookie != 0) {
- priv->failed_extraction_pause_cookie =
- tracker_miner_pause (TRACKER_MINER (data->miner),
- _("Extractor error, performing "
- "failsafe embedded metadata extraction"),
- NULL);
- }
-
- priv->failed_extraction_queue = g_list_prepend (priv->failed_extraction_queue, data);
- g_free (uri);
- } else {
- sparql_builder_finish (data, NULL, NULL, NULL, NULL);
-
- /* Something bad happened, notify about the error */
- tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), data->file, error);
- process_file_data_free (data);
- }
-
- g_error_free (error);
- } else {
- preupdate = tracker_extract_info_get_preupdate_builder (info);
- postupdate = tracker_extract_info_get_postupdate_builder (info);
- sparql = tracker_extract_info_get_metadata_builder (info);
- where = tracker_extract_info_get_where_clause (info);
-
- sparql_builder_finish (data,
- tracker_sparql_builder_get_result (preupdate),
- tracker_sparql_builder_get_result (postupdate),
- tracker_sparql_builder_get_result (sparql),
- where);
-
- /* Notify about the success */
- tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), data->file, NULL);
-
- process_file_data_free (data);
- }
-
- /* Wait until there are no pending extraction requests
- * before starting failsafe extraction process.
- */
- extractor_check_process_failsafe (miner);
-}
-
-static void
process_file_cb (GObject *object,
GAsyncResult *result,
gpointer user_data)
@@ -2382,24 +2166,12 @@ process_file_cb (GObject *object,
miner_files_add_to_datasource (data->miner, file, sparql);
- if (tracker_extract_module_manager_mimetype_is_handled (mime_type)) {
- /* Next step, if handled by the extractor, get embedded metadata */
- tracker_extract_client_get_metadata (data->file,
- mime_type,
- TRACKER_MINER_FS_GRAPH_URN,
- data->cancellable,
- extractor_get_embedded_metadata_cb,
- data);
- } else {
- /* Otherwise, don't request embedded metadata extraction. */
- g_debug ("Avoiding embedded metadata request for uri '%s'", uri);
- sparql_builder_finish (data, NULL, NULL, NULL, NULL);
- tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), data->file, NULL);
- priv->extraction_queue = g_list_remove (priv->extraction_queue, data);
- extractor_check_process_failsafe (data->miner);
- process_file_data_free (data);
- }
+ sparql_builder_finish (data, NULL, NULL, NULL, NULL);
+ tracker_miner_fs_file_notify (TRACKER_MINER_FS (data->miner), data->file, NULL);
+
+ priv->extraction_queue = g_list_remove (priv->extraction_queue, data);
+ process_file_data_free (data);
g_object_unref (file_info);
g_free (uri);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]