tracker r1803 - in branches/indexer-split: . src/tracker-indexer



Author: carlosg
Date: Mon Jun 30 12:13:03 2008
New Revision: 1803
URL: http://svn.gnome.org/viewvc/tracker?rev=1803&view=rev

Log:
2008-06-30  Carlos Garnacho  <carlos imendio com>

        Make tracker-indexer just process petitions through DBus by default,
        add a --process-all parameter to allow standalone testing.

        * src/tracker-indexer/tracker-indexer.c (tracker_indexer_process_all):
        Added, queues all known modules in the modules list, so all data is
        processed.
        * src/tracker-indexer/tracker-main.c: Add a --process-all commandline
        argument, which triggers all modules processing without need of
        DBus petitions.


Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/tracker-indexer/tracker-indexer.c
   branches/indexer-split/src/tracker-indexer/tracker-main.c

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.c	Mon Jun 30 12:13:03 2008
@@ -39,6 +39,9 @@
  * Once all queues are empty, all elements have been inspected, and the
  * indexer will emit the ::finished signal, this behavior can be observed
  * in the indexing_func() function.
+ *
+ * NOTE: Normally all indexing petitions will be sent over DBus, being
+ *       everything just pushed in the files queue.
  */
 
 #include <stdlib.h>
@@ -75,9 +78,9 @@
 struct TrackerIndexerPrivate {
 	GQueue *dir_queue;
 	GQueue *file_process_queue;
+	GQueue *modules_queue;
 
 	GSList *module_names;
-	GSList *current_module;
 	GHashTable *indexer_modules;
 
 	gchar *db_dir;
@@ -209,6 +212,9 @@
 	g_queue_foreach (priv->file_process_queue, (GFunc) path_info_free, NULL);
 	g_queue_free (priv->file_process_queue);
 
+	/* The queue doesn't own the module names */
+	g_queue_free (priv->modules_queue);
+
 	g_hash_table_destroy (priv->indexer_modules);
 
 	g_object_unref (priv->config);
@@ -311,6 +317,7 @@
 
 	priv->dir_queue = g_queue_new ();
 	priv->file_process_queue = g_queue_new ();
+	priv->modules_queue = g_queue_new ();
 	priv->config = tracker_config_new ();
 	priv->language = tracker_language_new (priv->config);
 
@@ -606,6 +613,7 @@
 	TrackerIndexer *indexer;
 	TrackerIndexerPrivate *priv;
 	PathInfo *path;
+	gchar *module;
 
 	indexer = (TrackerIndexer *) data;
 	priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
@@ -622,13 +630,9 @@
 		path_info_free (path);
 	} else {
 		/* Dirs/files queues are empty, process the next module */
-		if (!priv->current_module) {
-			priv->current_module = priv->module_names;
-		} else {
-			priv->current_module = priv->current_module->next;
-		}
+		module = g_queue_pop_head (priv->modules_queue);
 
-		if (!priv->current_module) {
+		if (!module) {
 			/* Flush remaining items */
 			schedule_flush (indexer, TRUE);
 
@@ -643,7 +647,7 @@
 			return FALSE;
 		}
 
-		process_module (indexer, priv->current_module->data);
+		process_module (indexer, module);
 
 		g_signal_emit (indexer, signals[INDEX_UPDATED], 0);
 	}
@@ -719,6 +723,19 @@
 	return TRUE;
 }
 
+void
+tracker_indexer_process_all (TrackerIndexer *indexer)
+{
+	TrackerIndexerPrivate *priv;
+	GSList *m;
+
+	priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
+
+	for (m = priv->module_names; m; m = m->next) {
+		g_queue_push_tail (priv->modules_queue, m->data);
+	}
+}
+
 gboolean
 tracker_indexer_files_check (TrackerIndexer  *indexer,
 			     GStrv            files,

Modified: branches/indexer-split/src/tracker-indexer/tracker-main.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-main.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-main.c	Mon Jun 30 12:13:03 2008
@@ -57,6 +57,7 @@
 static GMainLoop    *main_loop;
  
 static gint          verbosity = -1;
+static gboolean      process_all = FALSE;
 
 static GOptionEntry  entries[] = {
 	{ "verbosity", 'v', 0, 
@@ -64,6 +65,10 @@
 	  N_("Logging, 0 = errors only, "
 	     "1 = minimal, 2 = detailed and 3 = debug (default = 0)"), 
 	  NULL },
+        { "process-all", 'p', 0,
+          G_OPTION_ARG_NONE, &process_all,
+          N_("Whether to process data from all configured modules to be indexed"),
+          NULL },
 	{ NULL }
 };
 
@@ -255,6 +260,11 @@
 	g_signal_connect (indexer, "finished",
 			  G_CALLBACK (indexer_finished_cb), NULL);
 
+        if (process_all) {
+                /* Tell the indexer to process all configured modules */
+                tracker_indexer_process_all (indexer);
+        }
+
 	g_message ("Starting...");
 
 	main_loop = g_main_loop_new (NULL, FALSE);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]