tracker r1645 - in branches/xesam-support: . data/dbus src/libtracker-db src/tracker-indexer src/trackerd



Author: pvanhoof
Date: Wed Jun 11 16:16:40 2008
New Revision: 1645
URL: http://svn.gnome.org/viewvc/tracker?rev=1645&view=rev

Log:
2008-06-11  Philip Van Hoof  <pvanhoof gnome org>

        * svn merge -r 1625:1644 ../indexer-split



Added:
   branches/xesam-support/src/trackerd/tracker-crawler.c
      - copied unchanged from r1644, /branches/indexer-split/src/trackerd/tracker-crawler.c
   branches/xesam-support/src/trackerd/tracker-crawler.h
      - copied unchanged from r1644, /branches/indexer-split/src/trackerd/tracker-crawler.h
   branches/xesam-support/src/trackerd/tracker-monitor.c
      - copied unchanged from r1644, /branches/indexer-split/src/trackerd/tracker-monitor.c
   branches/xesam-support/src/trackerd/tracker-monitor.h
      - copied unchanged from r1644, /branches/indexer-split/src/trackerd/tracker-monitor.h
Removed:
   branches/xesam-support/src/trackerd/tracker-watcher-fam.c
   branches/xesam-support/src/trackerd/tracker-watcher-inotify.c
   branches/xesam-support/src/trackerd/tracker-watcher-poll.c
   branches/xesam-support/src/trackerd/tracker-watcher-win.c
   branches/xesam-support/src/trackerd/tracker-watcher.h
Modified:
   branches/xesam-support/ChangeLog
   branches/xesam-support/configure.ac
   branches/xesam-support/data/dbus/tracker-indexer.xml
   branches/xesam-support/src/libtracker-db/tracker-db-manager.c
   branches/xesam-support/src/tracker-indexer/tracker-indexer.c
   branches/xesam-support/src/tracker-indexer/tracker-indexer.h
   branches/xesam-support/src/tracker-indexer/tracker-main.c
   branches/xesam-support/src/trackerd/Makefile.am
   branches/xesam-support/src/trackerd/tracker-daemon.c
   branches/xesam-support/src/trackerd/tracker-db.c
   branches/xesam-support/src/trackerd/tracker-dbus.c
   branches/xesam-support/src/trackerd/tracker-dbus.h
   branches/xesam-support/src/trackerd/tracker-email-evolution.c
   branches/xesam-support/src/trackerd/tracker-email-kmail.c
   branches/xesam-support/src/trackerd/tracker-email-modest.c
   branches/xesam-support/src/trackerd/tracker-email-thunderbird.c
   branches/xesam-support/src/trackerd/tracker-main.c
   branches/xesam-support/src/trackerd/tracker-main.h
   branches/xesam-support/src/trackerd/tracker-process-files.c

Modified: branches/xesam-support/configure.ac
==============================================================================
--- branches/xesam-support/configure.ac	(original)
+++ branches/xesam-support/configure.ac	Wed Jun 11 16:16:40 2008
@@ -25,7 +25,7 @@
 
 AC_CHECK_HEADER([zlib.h], [], [AC_MSG_ERROR([You must have zlib.h and zlib installed])])
 
-dnl can posix_fadvise be used
+# Can posix_fadvise be used
 AC_CHECK_DECLS(posix_fadvise, [], [], [
 #define _XOPEN_SOURCE 600
 #include <fcntl.h>])
@@ -34,9 +34,9 @@
 AC_CHECK_FUNCS([posix_fadvise])
 AC_CHECK_FUNCS([getline])
 
-dnl Library Checks
+# Library Checks
 DBUS_REQUIRED=0.60
-GLIB_REQUIRED=2.14.0
+GLIB_REQUIRED=2.16.0
 PANGO_REQUIRED=1.0.0
 GMIME_REQUIRED=2.1.0
 
@@ -59,7 +59,11 @@
 AC_SUBST(GMODULE_CFLAGS)
 AC_SUBST(GMODULE_LIBS)
 
-#Check for pango
+PKG_CHECK_MODULES(GIO, [ gio-2.0 >= $GLIB_REQUIRED ])
+AC_SUBST(GIO_CFLAGS)
+AC_SUBST(GIO_LIBS)
+
+# Check for pango
 PKG_CHECK_MODULES(PANGO, [ pango >= $PANGO_REQUIRED ])
 AC_SUBST(PANGO_CFLAGS)
 AC_SUBST(PANGO_LIBS)
@@ -166,7 +170,7 @@
               AS_HELP_STRING([--disable-warnings], [disable GCC warnings]),,
               [enable_warnings=yes])
 
-dnl Only use -Wall if we have gcc
+# Only use -Wall if we have gcc
 if test "x$GCC" = "xyes"; then
   if test "x$enable_warnings" = "xyes"; then
      CFLAGS="\
@@ -230,7 +234,7 @@
 
 
 ##################################################################
-# check for libxml2
+# Check for libxml2
 ##################################################################
   
 LIBXML2_REQUIRED=0.6
@@ -253,7 +257,7 @@
 AM_CONDITIONAL(HAVE_LIBXML2, test "x$have_libxml2" = "xyes")
 
 ##################################################################
-# check for HAL
+# Check for HAL
 ##################################################################
   
 AC_ARG_ENABLE(hal, AS_HELP_STRING([--disable-hal],[Disable HAL support for ac power detection]),,[enable_hal=yes])
@@ -374,131 +378,6 @@
 AC_SUBST(SQLITE3_CFLAGS)
 AC_SUBST(SQLITE3_LIBS)
 
-###############################################################################
-# Check for file monitor backends
-###############################################################################
-
-FAM_LIBS=
-inotify_support=no
-inotify_linux=no
-inotify_header=none
-fam_support=no
-fam_type=none
-
-AM_CONDITIONAL(HAVE_INOTIFY, false)
-AM_CONDITIONAL(HAVE_INOTIFY_LINUX, false)
-AM_CONDITIONAL(HAVE_FAM, false)
-
-AC_ARG_ENABLE(file-monitoring,
-	AS_HELP_STRING(
-		[--enable-file-monitoring=ARG],
-		[enables one of the (inotify, fam, polling, auto) file monitoring backends]),,
-	enable_file_monitoring=auto)
-
-
-AC_CHECK_HEADERS([sys/inotify.h],
-		 [
-		 inotify_support=yes
-		 inotify_linux=no
-		 ])
-
-AC_CHECK_HEADERS([linux/inotify.h],
-		 [
-		 inotify_linux=yes
-		 inotify_support=yes
-		 ])
-
-AC_CHECK_LIB(fam, FAMOpen,
-		[AC_CHECK_HEADERS(fam.h,
-		[
-		fam_support=yes
-		fam_type=fam
-		],[fam_support=no])],
-		[fam_support=no])
-
-PKG_CHECK_MODULES(GAMIN, 
-		gamin,
-		[
-		fam_support=yes
-		fam_type=gamin
-		], 
-		[
-		fam_support=no
-		])
-
-if test "x$enable_file_monitoring" = "xauto"; then
-	if test "$inotify_support"  = "yes"; then
-		primary_backend="inotify"
-		if test "$inotify_linux" = "yes"; then
-			inotify_header="linux/inotify.h"
-		else
-			inotify_header="sys/inotify.h"
-		fi
-
-	elif test "$fam_support" = "yes"; then
-		if test "$fam_type" = "gamin"; then
-			primary_backend="gamin"
-		else
-			primary_backend="fam"
-		fi
-	else
-		if test "$native_win32" = "yes"; then
-			primary_backend="win32"
-		else
-			primary_backend="polling only"
-		fi
-	fi
-elif test "x$enable_file_monitoring" = "xinotify"; then
-	if test "$inotify_support" = "no"; then
-		AC_MSG_ERROR([***inotify requested but not found - exiting!])
-	else
-		primary_backend="inotify"
-		if test "$inotify_linux" = "yes"; then
-			inotify_header="linux/inotify.h"
-		else
-			inotify_header="sys/inotify.h"
-		fi
-	fi
-elif test "x$enable_file_monitoring" = "xfam"; then
-	if test "$fam_support" = "no"; then
-		AC_MSG_ERROR([***fam requested but not found - exiting!])
-	else
-		if test "$fam_type" = "gamin"; then
-			primary_backend="gamin"
-		else
-			primary_backend="fam"
-		fi
-	fi
-else
-	if test "$native_win32" = "yes"; then
-		primary_backend="win32"
-	else
-		primary_backend="polling only"
-	fi
-fi
-
-if test "$primary_backend" = "inotify"; then
-	AC_DEFINE(HAVE_INOTIFY, [], [Define if we have inotify])
-	AM_CONDITIONAL(HAVE_INOTIFY, true)
-	if test "$inotify_linux" = "yes"; then
-			AC_DEFINE(HAVE_INOTIFY_LINUX, [], 
-			[
-			Define if we have inotify and header is linux/inotify.h
-			])
-			AM_CONDITIONAL(HAVE_INOTIFY_LINUX, true)
-	fi
-elif test "$primary_backend" = "gamin"; then 
-	AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
-	AM_CONDITIONAL(HAVE_FAM, true)
-	FAM_LIBS="-lgamin-1"
-	AC_SUBST(FAM_LIBS)
-elif test "$primary_backend" = "fam"; then
-	AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
-	AM_CONDITIONAL(HAVE_FAM, true)
-	FAM_LIBS="-lfam"
-	AC_SUBST(FAM_LIBS)
-fi
-
 
 ##################################################################
 # Enable building libtracker-gtk?
@@ -527,10 +406,10 @@
 
 AM_CONDITIONAL(ENABLE_LIBTRACKERGTK, test "$enable_libtrackergtk" = "yes")
 
-
 ##################################################################
 # Enable building tracker-applet notification icon?
 ##################################################################
+
 LIBNOTIFY_GTK2_REQUIRED=2.10
 LIBNOTIFY_GLIB_REQUIRED=2.10
 LIBNOTIFY_REQUIRED=0.4.3
@@ -557,12 +436,10 @@
 
 AM_CONDITIONAL(ENABLE_TRACKERAPPLET, test "$enable_trackerapplet" = "yes")
 
-
 ##################################################################
 # Enable UNAC support?
 ##################################################################
 
-
 AC_ARG_ENABLE([unac], AS_HELP_STRING([--disable-unac], [Disable unac accent stripper support]),,[enable_unac=yes])
 
 if test "x$enable_unac" != "xno" ; then
@@ -581,11 +458,8 @@
 fi
 AM_CONDITIONAL(ENABLE_UNAC, test "$enable_unac" = "yes")
 
-
-
-
 ##################################################################
-# check for GNOME/GTK dependencies to build tracker search tool (Gnome client)
+# Check for GNOME/GTK dependencies to build tracker search tool (Gnome client)
 ##################################################################
 
 GTK_REQUIRED=2.8.0
@@ -672,7 +546,7 @@
 AM_CONDITIONAL(ENABLE_PREFERENCES, test "$enable_preferences" = "yes")
 
 ##################################################################
-# check for poppler's glib bingings
+# Check for poppler's glib bingings
 ##################################################################
 
 POPPLER_GLIB_REQUIRED=0.4.5
@@ -695,7 +569,7 @@
 test "$have_poppler" = "yes" && AC_DEFINE(HAVE_POPPLER, [], [Define if we have poppler])
 
 ##################################################################
-# check for libexif
+# Check for libexif
 ##################################################################
 
 LIBEXIF_REQUIRED=0.6
@@ -714,7 +588,7 @@
 test "$have_libexif" = "yes" && AC_DEFINE(HAVE_LIBEXIF, [], [Define if we have libexif])
 
 ##################################################################
-# check for libgsf
+# Check for libgsf
 ##################################################################
 
 LIBGSF_REQUIRED=1.13
@@ -753,10 +627,8 @@
    [ AC_DEFINE(HAVE_IOPRIO,[],[Define ioprio support]) have_ioprio=yes ])
 AC_MSG_RESULT([$have_ioprio])
 
-#####################################################
-
 ##################################################################
-# check for exempi
+# Check for exempi
 ##################################################################
 
 EXEMPI_REQUIRED=1.99.2
@@ -841,7 +713,7 @@
 
 	enable unac accent stripper:	  	$enable_unac
 
-	support for file monitoring:           	$primary_backend
+	support for file monitoring:           	gio
 	support for ioprio:			$have_ioprio
 	support for HAL:                    	$have_hal
 

Modified: branches/xesam-support/data/dbus/tracker-indexer.xml
==============================================================================
--- branches/xesam-support/data/dbus/tracker-indexer.xml	(original)
+++ branches/xesam-support/data/dbus/tracker-indexer.xml	Wed Jun 11 16:16:40 2008
@@ -10,9 +10,15 @@
 
 <node name="/">
   <interface name="org.freedesktop.Tracker.Indexer">  
-    <method name="GetRunning"/>
+    <method name="GetRunning">
+      <arg type="b" name="is_running" direction="out" />
+    </method>
     <method name="SetRunning">
-      <arg type="b" name="running" direction="in" />
+      <arg type="b" name="should_be_running" direction="in" />
+    </method>
+
+    <method name="ProcessFiles">
+      <arg type="as" name="files" direction="in" />
     </method>
     
     <!-- The old signal in the daemon used to send the time taken, we

Modified: branches/xesam-support/src/libtracker-db/tracker-db-manager.c
==============================================================================
--- branches/xesam-support/src/libtracker-db/tracker-db-manager.c	(original)
+++ branches/xesam-support/src/libtracker-db/tracker-db-manager.c	Wed Jun 11 16:16:40 2008
@@ -1725,6 +1725,8 @@
 			       dbs[type].add_functions);
 	}
 
+	db_exec_no_reply (iface, "ANALYZE");
+
 	if (attach_all) {
 		g_message ("  Attaching to current DB connection");
 		db_exec_no_reply (iface, 
@@ -1764,8 +1766,6 @@
 		load_metadata_file (iface, "email.metadata");
 		load_metadata_file (iface, "image.metadata");
 		load_metadata_file (iface, "video.metadata");
-
-		db_exec_no_reply (iface, "ANALYZE");
 	}
 
 	/* Load static data into tracker ontology */
@@ -1786,8 +1786,6 @@
 
 	if (create) {
 		load_sql_file (iface, "sqlite-cache.sql", NULL);
-
-		db_exec_no_reply (iface, "ANALYZE");
 	}
 
 	return iface;
@@ -1806,8 +1804,6 @@
 	if (create) {
 		load_sql_file (iface, "sqlite-service.sql", NULL);
 		load_sql_file (iface, "sqlite-service-triggers.sql", "!");
-
-		db_exec_no_reply (iface, "ANALYZE");
 	}
 
 	return iface;
@@ -1825,8 +1821,6 @@
 
 	if (create) {
 		load_sql_file (iface, "sqlite-contents.sql", NULL);
-
-		db_exec_no_reply (iface, "ANALYZE");
 	}
 
 	tracker_db_interface_sqlite_create_function (iface, 
@@ -1854,8 +1848,6 @@
 		load_sql_file (iface, "sqlite-service.sql", NULL);
 		load_sql_file (iface, "sqlite-email.sql", NULL);
 		load_sql_file (iface, "sqlite-service-triggers.sql", "!");
-
-		db_exec_no_reply (iface, "ANALYZE");
 	}
 
 	return iface;
@@ -1873,8 +1865,6 @@
 
 	if (create) {
 		load_sql_file (iface, "sqlite-contents.sql", NULL);
-
-		db_exec_no_reply (iface, "ANALYZE");
 	}
 
 	tracker_db_interface_sqlite_create_function (iface, 
@@ -2096,8 +2086,6 @@
 		load_service_file_xesam (iface, "xesam-metadata.mmapping");
 		
 		db_xesam_create_lookup (iface);
-
-		db_exec_no_reply (iface, "ANALYZE");
 	}
 
 	db_exec_no_reply (iface,

Modified: branches/xesam-support/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/xesam-support/src/tracker-indexer/tracker-indexer.c	(original)
+++ branches/xesam-support/src/tracker-indexer/tracker-indexer.c	Wed Jun 11 16:16:40 2008
@@ -48,6 +48,7 @@
 #include <glib/gstdio.h>
 
 #include <libtracker-common/tracker-config.h>
+#include <libtracker-common/tracker-dbus.h>
 #include <libtracker-common/tracker-file-utils.h>
 #include <libtracker-common/tracker-language.h>
 #include <libtracker-common/tracker-parser.h>
@@ -182,7 +183,9 @@
 
 	switch (prop_id) {
 	case PROP_RUNNING:
-		tracker_indexer_set_running (indexer, g_value_get_boolean (value));
+		tracker_indexer_set_running (indexer, 
+					     g_value_get_boolean (value), 
+					     NULL);
 		break;
 	case PROP_REINDEX:
 		priv->reindex = g_value_get_boolean (value);
@@ -281,7 +284,7 @@
 	priv->metadata = tracker_db_manager_get_db_interface (TRACKER_DB_FILE_METADATA);
 	priv->contents = tracker_db_manager_get_db_interface (TRACKER_DB_FILE_CONTENTS);
 
-	tracker_indexer_set_running (indexer, TRUE);
+	tracker_indexer_set_running (indexer, TRUE, NULL);
 
 	g_free (index_file);
 
@@ -600,21 +603,29 @@
 			     NULL);
 }
 
-void
-tracker_indexer_set_running (TrackerIndexer *indexer,
-			     gboolean        running)
+gboolean
+tracker_indexer_set_running (TrackerIndexer  *indexer,
+			     gboolean         should_be_running,
+			     GError         **error)
 {
 	TrackerIndexerPrivate *priv;
-	gboolean changed = FALSE;
+	guint                  request_id;
+	gboolean               changed = FALSE;
+
+	request_id = tracker_dbus_get_next_request_id ();
 
-	g_return_if_fail (TRACKER_IS_INDEXER (indexer));
+	tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
 
 	priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
 
-	if (running && priv->idle_id == 0) {
+        tracker_dbus_request_new (request_id,
+                                  "DBus request to %s indexer", 
+                                  should_be_running ? "start" : "stop");
+
+	if (should_be_running && priv->idle_id == 0) {
 		priv->idle_id = g_idle_add ((GSourceFunc) indexing_func, indexer);
 		changed = TRUE;
-	} else if (!running && priv->idle_id != 0) {
+	} else if (!should_be_running && priv->idle_id != 0) {
 		g_source_remove (priv->idle_id);
 		priv->idle_id = 0;
 		changed = TRUE;
@@ -623,16 +634,57 @@
 	if (changed) {
 		g_object_notify (G_OBJECT (indexer), "running");
 	}
+
+	tracker_dbus_request_success (request_id);
+
+	return TRUE;
 }
 
 gboolean
-tracker_indexer_get_running (TrackerIndexer *indexer)
+tracker_indexer_get_running (TrackerIndexer  *indexer,
+			     gboolean        *is_running,
+			     GError         **error)
 {
 	TrackerIndexerPrivate *priv;
+	guint                  request_id;
 
-	g_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
+	request_id = tracker_dbus_get_next_request_id ();
+
+	tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
+	tracker_dbus_return_val_if_fail (is_running != NULL, FALSE, error);
 
 	priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
 
-	return (priv->idle_id != 0);
+	tracker_dbus_request_new (request_id,
+                                  "DBus request to get running status");
+
+	*is_running = priv->idle_id != 0;
+
+	tracker_dbus_request_success (request_id);
+
+	return TRUE;
+}
+
+gboolean
+tracker_indexer_process_files (TrackerIndexer  *indexer,
+			       GStrv            files,
+			       GError         **error)
+{
+	/* TrackerIndexerPrivate *priv; */
+	guint                  request_id;
+
+	request_id = tracker_dbus_get_next_request_id ();
+
+	tracker_dbus_return_val_if_fail (TRACKER_IS_INDEXER (indexer), FALSE, error);
+	tracker_dbus_return_val_if_fail (files != NULL, FALSE, error);
+
+	tracker_dbus_request_new (request_id,
+                                  "DBus request to process %d files",
+				  g_strv_length (files));
+
+	/* Do work */
+
+	tracker_dbus_request_success (request_id);
+
+	return TRUE;
 }

Modified: branches/xesam-support/src/tracker-indexer/tracker-indexer.h
==============================================================================
--- branches/xesam-support/src/tracker-indexer/tracker-indexer.h	(original)
+++ branches/xesam-support/src/tracker-indexer/tracker-indexer.h	Wed Jun 11 16:16:40 2008
@@ -22,14 +22,14 @@
 #ifndef __TRACKER_INDEXER_H__
 #define __TRACKER_INDEXER_H__
 
+#include <glib-object.h>
+
 #define TRACKER_INDEXER_SERVICE      "org.freedesktop.Tracker.Indexer"
 #define TRACKER_INDEXER_PATH         "/org/freedesktop/Tracker/Indexer"
 #define TRACKER_INDEXER_INTERFACE    "org.freedesktop.Tracker.Indexer"
 
 G_BEGIN_DECLS
 
-#include <glib-object.h>
-
 #define TRACKER_TYPE_INDEXER         (tracker_indexer_get_type())
 #define TRACKER_INDEXER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_INDEXER, TrackerIndexer))
 #define TRACKER_INDEXER_CLASS(c)     (G_TYPE_CHECK_CLASS_CAST ((c),    TRACKER_TYPE_INDEXER, TrackerIndexerClass))
@@ -47,15 +47,21 @@
 struct TrackerIndexerClass {
 	GObjectClass parent_class;
 
-	void (*finished) (TrackerIndexer *indexer);
+	void (*finished)      (TrackerIndexer *indexer);
 	void (*index_updated) (TrackerIndexer *indexer);
 };
 
-GType           tracker_indexer_get_type    (void) G_GNUC_CONST;
-TrackerIndexer *tracker_indexer_new         (gboolean        reindex);
-void            tracker_indexer_set_running (TrackerIndexer *indexer,
-                                             gboolean        running);
-gboolean        tracker_indexer_get_running (TrackerIndexer *indexer);
+GType           tracker_indexer_get_type      (void) G_GNUC_CONST;
+TrackerIndexer *tracker_indexer_new           (gboolean         reindex);
+gboolean        tracker_indexer_set_running   (TrackerIndexer  *indexer,
+					       gboolean         should_be_running,
+					       GError         **error);
+gboolean        tracker_indexer_get_running   (TrackerIndexer  *indexer,
+					       gboolean        *is_running,
+					       GError         **error);
+gboolean        tracker_indexer_process_files (TrackerIndexer  *indexer,
+					       GStrv            files,
+					       GError         **error);
 
 G_END_DECLS
 

Modified: branches/xesam-support/src/tracker-indexer/tracker-main.c
==============================================================================
--- branches/xesam-support/src/tracker-indexer/tracker-main.c	(original)
+++ branches/xesam-support/src/tracker-indexer/tracker-main.c	Wed Jun 11 16:16:40 2008
@@ -86,6 +86,7 @@
 	case SIGSEGV:
 		/* we are screwed if we get this so exit immediately! */
 		exit (EXIT_FAILURE);
+
 	case SIGBUS:
 	case SIGILL:
 	case SIGFPE:
@@ -96,15 +97,6 @@
 		in_loop = TRUE;
 		g_main_loop_quit (main_loop);
 
-		/*
-		tracker->is_running = FALSE;
-		tracker_end_watching ();
-
-		g_timeout_add_full (G_PRIORITY_LOW,
-				    1,
-				    (GSourceFunc) tracker_do_cleanup,
-				    g_strdup (g_strsignal (signo)), NULL);
-		*/
 	default:
 		if (g_strsignal (signo)) {
 			g_warning ("Received signal: %s", g_strsignal (signo));

Modified: branches/xesam-support/src/trackerd/Makefile.am
==============================================================================
--- branches/xesam-support/src/trackerd/Makefile.am	(original)
+++ branches/xesam-support/src/trackerd/Makefile.am	Wed Jun 11 16:16:40 2008
@@ -12,6 +12,7 @@
 	$(QDBM_CFLAGS)							\
 	$(DBUS_CFLAGS)							\
 	$(PANGO_CFLAGS)							\
+	$(GIO_CFLAGS)							\
 	$(GMODULE_CFLAGS)						\
 	$(GTHREAD_CFLAGS)						\
 	$(GLIB2_CFLAGS)
@@ -47,30 +48,13 @@
 
 
 #
-# Use either inotify, fam, win32 or poll API to know about file
-# changes and in that order.
-#
-if HAVE_INOTIFY
-watcher_sources = tracker-watcher-inotify.c linux-inotify-syscalls.h
-else  # HAVE_INOTIFY 
-if HAVE_FAM
-watcher_sources = tracker-watcher-fam.c
-else  # HAVE_FAM 
-if OS_WIN32
-watcher_sources = tracker-watcher-win.c
-else  # OS_WIN32 
-watcher_sources = tracker-watcher-poll.c
-endif # OS_WIN32 
-endif # HAVE_FAM
-endif # HAVE_INOTIFY
-
-#
 # Daemon sources
 #
 bin_PROGRAMS = trackerd
 
 trackerd_SOURCES =							\
-	$(watcher_sources)						\
+	tracker-crawler.c						\
+	tracker-crawler.h						\
 	tracker-daemon.c						\
 	tracker-daemon.h						\
 	tracker-db.c							\
@@ -97,6 +81,8 @@
 	tracker-marshal-main.c						\
 	tracker-metadata.c						\
 	tracker-metadata.h						\
+	tracker-monitor.c						\
+	tracker-monitor.h						\
 	tracker-query-tree.c						\
 	tracker-query-tree.h						\
 	tracker-rdf-query.c						\
@@ -107,7 +93,6 @@
 	tracker-status.h						\
 	tracker-utils.c							\
 	tracker-utils.h							\
-	tracker-watcher.h						\
 	tracker-xesam.c							\
 	tracker-xesam.h							\
 	tracker-xesam-manager.c						\
@@ -134,6 +119,7 @@
 	$(QDBM_LIBS)							\
 	$(DBUS_LIBS)							\
 	$(PANGO_LIBS)							\
+	$(GIO_LIBS)							\
 	$(GMODULE_LIBS)							\
 	$(GTHREAD_LIBS)							\
 	$(GLIB2_LIBS)							\

Modified: branches/xesam-support/src/trackerd/tracker-daemon.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-daemon.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-daemon.c	Wed Jun 11 16:16:40 2008
@@ -508,7 +508,7 @@
 
 	priv = GET_PRIV (object);
 
-	g_message ("Tracker daemon attempting to restart");
+	g_message ("Tracker daemon attempting to shutdown");
 
 	priv->tracker->reindex = reindex;
 

Modified: branches/xesam-support/src/trackerd/tracker-db.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-db.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-db.c	Wed Jun 11 16:16:40 2008
@@ -40,7 +40,7 @@
 #include "tracker-db.h"
 #include "tracker-process-files.h"
 #include "tracker-query-tree.h"
-#include "tracker-watcher.h"
+#include "tracker-monitor.h"
 #include "tracker-xesam-manager.h"
 
 #define ZLIBBUFSIZ            8192
@@ -556,12 +556,12 @@
 		const gchar        *moved_to_uri)
 {
 	/* Stop watching old dir, start watching new dir */
-	tracker_watcher_remove_dir (moved_from_uri, TRUE, iface);
+	tracker_monitor_remove (moved_from_uri, TRUE, iface);
 		
 	tracker_db_file_move (iface, moved_from_uri, moved_to_uri);
 	directory_move_files (iface, moved_from_uri, moved_to_uri);
 
-	tracker_watcher_add_dir (moved_to_uri, iface);
+	tracker_monitor_add (moved_to_uri, iface);
 }
 
 static gint 

Modified: branches/xesam-support/src/trackerd/tracker-dbus.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-dbus.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-dbus.c	Wed Jun 11 16:16:40 2008
@@ -41,7 +41,6 @@
 #include "tracker-xesam-glue.h"
 #include "tracker-indexer-client.h"
 #include "tracker-utils.h"
-#include "tracker-watcher.h"
 
 static DBusGConnection *connection;
 static DBusGProxy      *proxy;
@@ -312,14 +311,14 @@
         return NULL;
 }
 
-DBusGProxy *
-tracker_dbus_start_indexer (void)
+void
+tracker_dbus_indexer_start (void)
 {
 	GError *error = NULL;
 
 	if (!connection) {
 		g_critical ("DBus support must be initialized before starting the indexer!");
-		return NULL;
+		return;
 	}
 
 	if (!proxy_for_indexer) {
@@ -331,7 +330,7 @@
 		
 		if (!proxy_for_indexer) {
 			g_critical ("Couldn't create a DBusGProxy to the indexer service");
-			return NULL;
+			return;
 		}
 	}
 
@@ -343,6 +342,35 @@
 		g_warning ("Couldn't start indexer, %s",
 			   error->message);
 	}
+}
+
+DBusGProxy *
+tracker_dbus_indexer_get_proxy (void)
+{
+	GError *error = NULL;
+
+	if (!connection) {
+		g_critical ("DBus support must be initialized before starting the indexer!");
+		return NULL;
+	}
+
+	if (!proxy_for_indexer) {
+		/* Get proxy for Service / Path / Interface of the indexer */
+		proxy_for_indexer = dbus_g_proxy_new_for_name (connection,
+							       "org.freedesktop.Tracker.Indexer", 
+ 							       "/org/freedesktop/Tracker/Indexer",
+							       "org.freedesktop.Tracker.Indexer");
+		
+		if (!proxy_for_indexer) {
+			g_critical ("Couldn't create a DBusGProxy to the indexer service");
+			return NULL;
+		}
+	}
+
+	if (error) {
+		g_warning ("Couldn't start indexer, %s",
+			   error->message);
+	}
 	
 	return proxy_for_indexer;
 }

Modified: branches/xesam-support/src/trackerd/tracker-dbus.h
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-dbus.h	(original)
+++ branches/xesam-support/src/trackerd/tracker-dbus.h	Wed Jun 11 16:16:40 2008
@@ -33,11 +33,12 @@
 
 G_BEGIN_DECLS
 
-gboolean    tracker_dbus_init             (TrackerConfig *config);
-void        tracker_dbus_shutdown         (void);
-gboolean    tracker_dbus_register_objects (Tracker       *tracker);
-GObject    *tracker_dbus_get_object       (GType          type);
-DBusGProxy *tracker_dbus_start_indexer    (void);
+gboolean    tracker_dbus_init              (TrackerConfig *config);
+void        tracker_dbus_shutdown          (void);
+gboolean    tracker_dbus_register_objects  (Tracker       *tracker);
+GObject    *tracker_dbus_get_object        (GType          type);
+void        tracker_dbus_indexer_start     (void);
+DBusGProxy *tracker_dbus_indexer_get_proxy (void);
 
 G_END_DECLS
 

Modified: branches/xesam-support/src/trackerd/tracker-email-evolution.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-email-evolution.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-email-evolution.c	Wed Jun 11 16:16:40 2008
@@ -43,7 +43,6 @@
 #include "tracker-email-plugin.h"
 #include "tracker-dbus.h"
 #include "tracker-daemon.h"
-#include "tracker-watcher.h"
 #include "tracker-status.h"
 #include "tracker-utils.h"
 #include "tracker-main.h"

Modified: branches/xesam-support/src/trackerd/tracker-email-kmail.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-email-kmail.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-email-kmail.c	Wed Jun 11 16:16:40 2008
@@ -34,8 +34,8 @@
 #include "tracker-email-utils.h"
 #include "tracker-db-email.h"
 #include "tracker-main.h"
+#include "tracker-monitor.h"
 #include "tracker-process-files.h"
-#include "tracker-watcher.h"
 
 typedef struct {
         gchar            *imap_path;
@@ -663,7 +663,7 @@
                     (( in_imap_dir && dir_name[0] == '.' && g_str_has_suffix (dir_name, ".directory")) ||
                       !in_imap_dir )
                     ) {
-                        if (!tracker_watcher_is_dir_watched (dir_path, iface)) {
+                        if (!tracker_monitor_is_watched (dir_path, iface)) {
                                 /* if we are in a maildir directory, we will only index emails in directory "cur" */
                                 gchar *dir_cur = g_build_filename (dir_path, "cur", NULL);
 

Modified: branches/xesam-support/src/trackerd/tracker-email-modest.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-email-modest.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-email-modest.c	Wed Jun 11 16:16:40 2008
@@ -40,8 +40,6 @@
 #include "tracker-dbus.h"
 #include "tracker-daemon.h"
 #include "tracker-status.h"
-#include "tracker-watcher.h"
-
 
 #define MODEST_HOME	".modest"
 #define MODEST_HOME_CACHE_MAIL MODEST_HOME G_DIR_SEPARATOR_S "cache" G_DIR_SEPARATOR_S "mail"

Modified: branches/xesam-support/src/trackerd/tracker-email-thunderbird.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-email-thunderbird.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-email-thunderbird.c	Wed Jun 11 16:16:40 2008
@@ -27,7 +27,6 @@
 #include "tracker-email-plugin.h"
 
 #include "tracker-db-email.h"
-#include "tracker-watcher.h"
 #include "tracker-main.h"
 
 typedef enum

Modified: branches/xesam-support/src/trackerd/tracker-main.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-main.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-main.c	Wed Jun 11 16:16:40 2008
@@ -46,11 +46,12 @@
 #include <libtracker-db/tracker-db-manager.h>
 
 #include "tracker-email.h"
+#include "tracker-crawler.h"
 #include "tracker-dbus.h"
 #include "tracker-indexer.h"
+#include "tracker-monitor.h"
 #include "tracker-process-files.h"
 #include "tracker-status.h"
-#include "tracker-watcher.h"
 #include "tracker-xesam-manager.h"
 
 #ifdef OS_WIN32
@@ -138,7 +139,6 @@
 static gboolean       low_memory;
 static gint           throttle = -1;
 static gint           verbosity = -1;
-static gint           initial_sleep = -1; 
 
 static GOptionEntry   entries[] = {
 	{ "exclude-dir", 'e', 0, 
@@ -158,8 +158,8 @@
 	  N_("Disable any indexing or watching taking place"), NULL },
 	{ "verbosity", 'v', 0, 
 	  G_OPTION_ARG_INT, &verbosity, 
-	  N_("Value that controls the level of logging. "
-	     "Valid values are 0 (displays/logs only errors), "
+	  N_("Value that controls the level of logging."
+	     "Valid values are: 0 (displays/logs only errors), "
 	     "1 (minimal), 2 (detailed), and 3 (debug)"), 
 	  N_("VALUE") },
 	{ "throttle", 't', 0, 
@@ -172,10 +172,6 @@
 	  G_OPTION_ARG_NONE, &low_memory, 
 	  N_("Minimizes the use of memory but may slow indexing down"), 
 	  NULL },
-	{ "initial-sleep", 's', 0, 
-	  G_OPTION_ARG_INT, &initial_sleep, 
-	  N_("Initial sleep time, just before indexing, in seconds"), 
-	  NULL },
 	{ "language", 'l', 0, 
 	  G_OPTION_ARG_STRING, &language, 
 	  N_("Language to use for stemmer and stop words list "
@@ -408,7 +404,7 @@
 	case SIGTERM:
 	case SIGINT:
 		in_loop = TRUE;
-		tracker->is_running = FALSE;
+		tracker_shutdown ();
 	
 	default:
 		if (g_strsignal (signo)) {
@@ -790,10 +786,6 @@
 		tracker_config_set_verbosity (tracker->config, verbosity);
 	}
 
-	if (initial_sleep > -1) {
-		tracker_config_set_initial_sleep (tracker->config, initial_sleep);
-	}
-
 	/* Initialise other subsystems */
 	tracker_log_init (log_filename, tracker_config_get_verbosity (tracker->config));
 	g_print ("Starting log:\n  File:'%s'\n", log_filename);
@@ -804,7 +796,7 @@
 
 	sanity_check_option_values ();
 
-	if (!tracker_watcher_init ()) {
+	if (!tracker_monitor_init ()) {
 		return EXIT_FAILURE;
 	} 
 
@@ -814,14 +806,18 @@
 	tracker_ontology_init ();
 	tracker_xesam_ontology_init ();
 	tracker_db_init ();
-	tracker_db_manager_init (FALSE, data_dir, user_data_dir, sys_tmp_dir); /* Using TRUE=broken */
+	tracker_db_manager_init (TRUE, data_dir, user_data_dir, sys_tmp_dir); /* Using TRUE=broken */
 	tracker_xesam_manager_init ();
 	tracker_email_start_email_watching (tracker_config_get_email_client (tracker->config));
 
+	tracker->crawler = tracker_crawler_new ();
+
 #ifdef HAVE_HAL
  	tracker->hal = tracker_hal_new ();
+	tracker_crawler_set_hal (tracker->crawler, tracker->hal);
 #endif /* HAVE_HAL */
-
+	
+	tracker_crawler_set_config (tracker->crawler, tracker->config);
 
 	umask (077);
 
@@ -839,49 +835,25 @@
 		return EXIT_FAILURE;
 	}
 
-	if (!tracker->readonly) {
-		tracker_process_files_init (tracker);
+	g_message ("Waiting for DBus requests...");
 
+	if (!tracker->readonly) {
 		if (tracker_config_get_enable_indexing (tracker->config)) {
-			gint initial_sleep;
+			/* Get files first */
+			tracker_crawler_start (tracker->crawler);
 
-			initial_sleep = tracker_config_get_initial_sleep (tracker->config);
-			g_message ("Indexing enabled, sleeping for %d secs before starting...", 
-				   initial_sleep);
-			
-			while (initial_sleep > 0) {
-				g_usleep (G_USEC_PER_SEC);
-				
-				initial_sleep --;
-				
-				if (!tracker->is_running) {
-					break;
-				}
-			}
-			
 			if (tracker->is_running) {
 				DBusGProxy *proxy;
-				g_message ("Indexing enabled, starting...");
-				proxy = tracker_dbus_start_indexer ();
+
+				proxy = tracker_dbus_indexer_get_proxy ();
 				tracker_xesam_subscribe_index_updated (proxy);
 			}
 
-#if 0
-			thread = g_thread_create_full ((GThreadFunc) tracker_process_files, 
-						       tracker,
-						       (gulong) tracker_config_get_thread_stack_size (tracker->config),
-						       TRUE, 
-						       FALSE, 
-						       G_THREAD_PRIORITY_NORMAL, 
-						       NULL);
-#endif
 		} else {
 			g_message ("Indexing disabled, not starting");
 		}
 	}
 
-	g_message ("Waiting for DBus requests...");
-	
 	if (tracker->is_running) {
 		main_loop = g_main_loop_new (NULL, FALSE);
 		g_main_loop_run (main_loop);
@@ -889,6 +861,10 @@
 
 	g_message ("Shutting down...\n");
 
+	if (tracker->crawler) {
+		g_object_unref (tracker->crawler);
+	}
+
 	/* 
 	 * Shutdown the daemon
 	 */
@@ -907,14 +883,13 @@
 	shutdown_directories ();
 
 	/* Shutdown major subsystems */
-	tracker_process_files_shutdown ();
 	tracker_email_end_email_watching ();
 	tracker_dbus_shutdown ();
 	tracker_xesam_manager_shutdown ();
 	tracker_db_shutdown ();
 	tracker_db_manager_shutdown ();
 	tracker_ontology_shutdown ();
-	tracker_watcher_shutdown ();
+	tracker_monitor_shutdown ();
 	tracker_nfs_lock_shutdown ();
 	tracker_log_shutdown ();
 
@@ -940,6 +915,11 @@
 void
 tracker_shutdown (void)
 {
+	tracker->is_running = FALSE;
+
+	/* Stop any tight loop operations */
+	tracker_crawler_stop (tracker->crawler);
+
 	g_main_loop_quit (main_loop);
 }
 

Modified: branches/xesam-support/src/trackerd/tracker-main.h
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-main.h	(original)
+++ branches/xesam-support/src/trackerd/tracker-main.h	Wed Jun 11 16:16:40 2008
@@ -36,6 +36,7 @@
 
 #include <libtracker-db/tracker-db-action.h>
 
+#include "tracker-crawler.h"
 #include "tracker-indexer.h"
 
 G_BEGIN_DECLS
@@ -48,6 +49,8 @@
         TrackerConfig    *config;
         TrackerLanguage  *language;
 
+	TrackerCrawler   *crawler;
+
  	gboolean          is_running; 
 	gboolean          readonly;
 

Modified: branches/xesam-support/src/trackerd/tracker-process-files.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-process-files.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-process-files.c	Wed Jun 11 16:16:40 2008
@@ -48,7 +48,7 @@
 #include "tracker-daemon.h"
 #include "tracker-email.h"
 #include "tracker-indexer.h"
-#include "tracker-watcher.h"
+#include "tracker-monitor.h"
 #include "tracker-status.h"
 #include "tracker-process-files.h"
 
@@ -251,7 +251,7 @@
                                 continue;
                         }
                         
-                        if (!tracker_watcher_add_dir (dir, iface)) {
+                        if (!tracker_monitor_add (dir, iface)) {
                                 g_warning ("Watch failed for:'%s'", dir);
                         }
 		}
@@ -400,7 +400,7 @@
 
 	tracker_db_directory_delete (iface, info->file_id, info->uri);
 
-	tracker_watcher_remove_dir (info->uri, TRUE, iface);
+	tracker_monitor_remove (info->uri, TRUE, iface);
 
 	g_message ("Deleting directory:'%s' and subdirs", info->uri);
 }



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