tracker r1905 - in branches/indexer-split: . data/dbus src/tracker-indexer src/trackerd



Author: mr
Date: Tue Jul 22 15:28:15 2008
New Revision: 1905
URL: http://svn.gnome.org/viewvc/tracker?rev=1905&view=rev

Log:
	* data/dbus/tracker-indexer.xml:
	* src/tracker-indexer/tracker-indexer.c: Fixed HAL warning when it
	isn't compiled in. Fixed the indexer pausing so it works properly
	and has proper debugging so we know when it is called like all
	other DBus functions. 

	* src/trackerd/tracker-daemon.c: Connected the "Paused" and
	"Continued" signals of the indexer so we know when to signal it
	up the stack.

	* src/trackerd/tracker-dbus.c: Add the prototypes for "Paused" and
	"Continued" for the indexer proxy.

	* src/trackerd/tracker-main.c: Removed some debugging which was
	duplicated when we changed state between paused/resumed.


Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/data/dbus/tracker-indexer.xml
   branches/indexer-split/src/tracker-indexer/tracker-indexer.c
   branches/indexer-split/src/tracker-indexer/tracker-indexer.h
   branches/indexer-split/src/trackerd/tracker-daemon.c
   branches/indexer-split/src/trackerd/tracker-dbus.c
   branches/indexer-split/src/trackerd/tracker-main.c

Modified: branches/indexer-split/data/dbus/tracker-indexer.xml
==============================================================================
--- branches/indexer-split/data/dbus/tracker-indexer.xml	(original)
+++ branches/indexer-split/data/dbus/tracker-indexer.xml	Tue Jul 22 15:28:15 2008
@@ -38,9 +38,9 @@
       <arg type="u" name="items_done" />
       <arg type="u" name="items_remaining" />
     </signal>
+    <signal name="Started" />
     <signal name="Paused" />
     <signal name="Continued" />
-    <signal name="Started" />
     <signal name="Finished">
       <arg type="d" name="elapsed_time" />
       <arg type="u" name="items_done" />

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	Tue Jul 22 15:28:15 2008
@@ -121,6 +121,7 @@
 	guint items_indexed;
 
 	gboolean in_transaction;
+	gboolean is_paused;
 };
 
 struct PathInfo {
@@ -289,10 +290,11 @@
 							    indexer);
 }
 
+#ifdef HAVE_HAL
+
 static void
 set_up_throttle (TrackerIndexer *indexer)
 {
-#ifdef HAVE_HAL
 	gint throttle;
 
 	/* If on a laptop battery and the throttling is default (i.e.
@@ -328,10 +330,6 @@
 				   throttle);
 		}
 	}
-#else  /* HAVE_HAL */
-	g_message ("HAL is not available to know if we are using a battery or not.");
-	g_message ("Not setting the throttle");
-#endif /* HAVE_HAL */
 }
 
 static void
@@ -342,6 +340,8 @@
 	set_up_throttle (TRACKER_INDEXER (user_data));
 }
 
+#endif /* HAVE_HAL */
+
 static void
 tracker_indexer_finalize (GObject *object)
 {
@@ -519,7 +519,8 @@
 static void
 check_started (TrackerIndexer *indexer)
 {
-	if (indexer->private->idle_id) {
+	if (indexer->private->idle_id ||
+	    indexer->private->is_paused == TRUE) {
 		return;
 	}
 
@@ -967,42 +968,60 @@
 	return indexer->private->idle_id != 0;
 }
 
-
 /**
  * This one is not being used yet, but might be used in near future. Therefore
  * it would be useful if Garnacho could review this for consistency and 
  * correctness. Ps. it got written by that pvanhoof dude, just ping him if you
  * have questions.
  **/
-
 void
 tracker_indexer_set_paused (TrackerIndexer         *indexer,
 			    gboolean                paused,
 			    DBusGMethodInvocation  *context,
 			    GError                **error)
 {
-	g_return_if_fail (TRACKER_IS_INDEXER (indexer));
+	guint request_id;
+	
+	request_id = tracker_dbus_get_next_request_id ();
+
+	tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
+
+	tracker_dbus_request_new (request_id,
+                                  "DBus request to %s the indexer",
+				  paused ? "pause" : "resume");
 
 	if (tracker_indexer_get_is_running (indexer)) {
 		if (paused) {
 			if (indexer->private->in_transaction) {
+				tracker_dbus_request_comment (request_id, 
+							      "Committing transactions");
 				stop_transaction (indexer);
 			}
-			if (indexer->private->idle_id) {
-				g_source_remove (indexer->private->idle_id);
-				indexer->private->idle_id = 0;
-			}
+
+			tracker_dbus_request_comment (request_id, 
+						      "Pausing indexing");
+			
+			g_source_remove (indexer->private->idle_id);
+			indexer->private->idle_id = 0;
+			indexer->private->is_paused = TRUE;
+
 			g_signal_emit (indexer, signals[PAUSED], 0);
 		}
 	} else {
 		if (!paused) {
-			if (!indexer->private->idle_id) {
-				indexer->private->idle_id = g_idle_add (process_func, indexer);
-				g_signal_emit (indexer, signals[CONTINUED], 0);
-			}
+			tracker_dbus_request_comment (request_id, 
+						      "Resuming indexing");
+
+			indexer->private->is_paused = FALSE;
+			indexer->private->idle_id = g_idle_add (process_func, indexer);
+
+			g_signal_emit (indexer, signals[CONTINUED], 0);
 		}
 	}
+
 	dbus_g_method_return (context);
+
+	tracker_dbus_request_success (request_id);
 }
 
 
@@ -1028,11 +1047,11 @@
 	gint i;
 	GError *actual_error = NULL;
 
+	request_id = tracker_dbus_get_next_request_id ();
+
 	tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
 	tracker_dbus_async_return_if_fail (files != NULL, FALSE);
 
-	request_id = tracker_dbus_get_next_request_id ();
-
 	tracker_dbus_request_new (request_id,
                                   "DBus request to check %d files",
 				  g_strv_length (files));
@@ -1075,11 +1094,11 @@
 	gint i;
 	GError *actual_error = NULL;
 
+	request_id = tracker_dbus_get_next_request_id ();
+
 	tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
 	tracker_dbus_async_return_if_fail (files != NULL, FALSE);
 
-	request_id = tracker_dbus_get_next_request_id ();
-
 	tracker_dbus_request_new (request_id,
                                   "DBus request to update %d files",
 				  g_strv_length (files));
@@ -1122,11 +1141,11 @@
 	gint i;
 	GError *actual_error = NULL;
 
+	request_id = tracker_dbus_get_next_request_id ();
+
 	tracker_dbus_async_return_if_fail (TRACKER_IS_INDEXER (indexer), FALSE);
 	tracker_dbus_async_return_if_fail (files != NULL, FALSE);
 
-	request_id = tracker_dbus_get_next_request_id ();
-
 	tracker_dbus_request_new (request_id,
                                   "DBus request to delete %d files",
 				  g_strv_length (files));

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.h
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.h	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.h	Tue Jul 22 15:28:15 2008
@@ -75,9 +75,9 @@
 
 gboolean        tracker_indexer_get_is_running (TrackerIndexer         *indexer);
 void            tracker_indexer_set_paused     (TrackerIndexer         *indexer,
-						 gboolean                paused,
-						 DBusGMethodInvocation  *context,
-						 GError                **error);
+						gboolean                paused,
+						DBusGMethodInvocation  *context,
+						GError                **error);
 void            tracker_indexer_process_all    (TrackerIndexer         *indexer);
 
 void            tracker_indexer_files_check    (TrackerIndexer         *indexer,

Modified: branches/indexer-split/src/trackerd/tracker-daemon.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-daemon.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-daemon.c	Tue Jul 22 15:28:15 2008
@@ -35,6 +35,7 @@
 #include "tracker-dbus.h"
 #include "tracker-daemon.h"
 #include "tracker-db.h"
+#include "tracker-indexer-client.h"
 #include "tracker-main.h"
 #include "tracker-status.h"
 #include "tracker-marshal.h"
@@ -42,10 +43,9 @@
 #define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_DAEMON, TrackerDaemonPriv))
 
 typedef struct {
-	DBusGProxy       *fd_proxy;
-
 	TrackerConfig    *config;
 	TrackerProcessor *processor;
+	DBusGProxy       *indexer_proxy;
 } TrackerDaemonPriv;
 
 enum {
@@ -55,7 +55,16 @@
         LAST_SIGNAL
 };
 
-static void daemon_finalize (GObject *object);
+static void daemon_finalize       (GObject    *object);
+static void indexer_set_paused_cb (DBusGProxy *proxy,
+				   GError     *error,
+				   gpointer    user_data);
+static void indexer_paused_cb     (DBusGProxy *proxy,
+				   GError     *error,
+				   gpointer    user_data);
+static void indexer_continued_cb  (DBusGProxy *proxy,
+				   GError     *error,
+				   gpointer    user_data);
 
 static guint signals[LAST_SIGNAL] = {0};
 
@@ -122,13 +131,19 @@
 static void
 daemon_finalize (GObject *object)
 {
+	TrackerDaemon     *daemon;
 	TrackerDaemonPriv *priv;
 
-	priv = GET_PRIV (object);
+	daemon = TRACKER_DAEMON (object);
+	priv = GET_PRIV (daemon);
 
-	if (priv->fd_proxy) {
-		g_object_unref (priv->fd_proxy);
-	}
+	dbus_g_proxy_disconnect_signal (priv->indexer_proxy, "Continued",
+					G_CALLBACK (indexer_continued_cb),
+					daemon);
+	dbus_g_proxy_disconnect_signal (priv->indexer_proxy, "Paused",
+					G_CALLBACK (indexer_paused_cb),
+					daemon);
+	g_object_unref (priv->indexer_proxy);
 
 	g_object_unref (priv->processor);
 	g_object_unref (priv->config);
@@ -142,6 +157,7 @@
 {
 	TrackerDaemon     *object;
 	TrackerDaemonPriv *priv;
+	DBusGProxy        *proxy;
 
 	g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
 	g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), NULL);
@@ -153,9 +169,50 @@
 	priv->config = g_object_ref (config);
 	priv->processor = g_object_ref (processor);
 
+	proxy = tracker_dbus_indexer_get_proxy ();
+	priv->indexer_proxy = g_object_ref (proxy);
+
+	dbus_g_proxy_connect_signal (proxy, "Paused",
+				     G_CALLBACK (indexer_paused_cb),
+				     g_object_ref (object),
+				     (GClosureNotify) g_object_unref);
+	dbus_g_proxy_connect_signal (proxy, "Continued",
+				     G_CALLBACK (indexer_continued_cb),
+				     g_object_ref (object),
+				     (GClosureNotify) g_object_unref);
+
 	return object;
 }
 
+static void 
+indexer_set_paused_cb (DBusGProxy *proxy,
+		       GError     *error,
+		       gpointer    user_data)
+{
+	if (error) {
+		g_message ("Could not pause/resume the indexer, %s",
+			   error->message);
+	}
+}
+
+static void 
+indexer_paused_cb (DBusGProxy *proxy,
+		   GError     *error,
+		   gpointer    user_data)
+{
+	g_message ("The indexer has paused");
+	tracker_set_is_paused_manually (TRUE);
+}
+
+static void 
+indexer_continued_cb (DBusGProxy *proxy,
+		      GError     *error,
+		      gpointer    user_data)
+{
+	g_message ("The indexer has continued");
+	tracker_set_is_paused_manually (FALSE);
+}
+
 /*
  * Functions
  */
@@ -323,7 +380,10 @@
 				  value ? "true" : "false");
 
 	if (strcasecmp (option, "Pause") == 0) {
-		tracker_set_is_paused_manually (value);
+		org_freedesktop_Tracker_Indexer_set_paused_async (priv->indexer_proxy, 
+								  value, 
+								  indexer_set_paused_cb, 
+								  NULL);
 	} else if (strcasecmp (option, "FastMerges") == 0) {
                 tracker_config_set_fast_merges (priv->config, value);
                 g_message ("Fast merges set to %d", value);

Modified: branches/indexer-split/src/trackerd/tracker-dbus.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-dbus.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-dbus.c	Tue Jul 22 15:28:15 2008
@@ -370,6 +370,12 @@
 					 "Started",
 					 G_TYPE_INVALID);
 		dbus_g_proxy_add_signal (proxy_for_indexer,
+					 "Paused",
+					 G_TYPE_INVALID);
+		dbus_g_proxy_add_signal (proxy_for_indexer,
+					 "Continued",
+					 G_TYPE_INVALID);
+		dbus_g_proxy_add_signal (proxy_for_indexer,
 					 "Finished",
 					 G_TYPE_DOUBLE,
 					 G_TYPE_UINT,

Modified: branches/indexer-split/src/trackerd/tracker-main.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-main.c	(original)
+++ branches/indexer-split/src/trackerd/tracker-main.c	Tue Jul 22 15:28:15 2008
@@ -913,12 +913,6 @@
 		return;
 	}
 	
-	if (value) {
-		g_message ("Tracker daemon has been paused by user");
-	} else {
-		g_message ("Tracker daemon has been resumed by user");
-	}
-
 	/* Set value */
 	is_paused_manually = value;
 



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