tracker r1871 - in branches/indexer-split: . src/libtracker-db src/trackerd
- From: mr svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1871 - in branches/indexer-split: . src/libtracker-db src/trackerd
- Date: Mon, 14 Jul 2008 13:28:16 +0000 (UTC)
Author: mr
Date: Mon Jul 14 13:28:16 2008
New Revision: 1871
URL: http://svn.gnome.org/viewvc/tracker?rev=1871&view=rev
Log:
* src/trackerd/tracker-crawler.c: Added a signal to know when all
items have been sent to the indexer.
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/src/libtracker-db/tracker-db-manager.c
branches/indexer-split/src/libtracker-db/tracker-db-manager.h
branches/indexer-split/src/trackerd/tracker-crawler.c
branches/indexer-split/src/trackerd/tracker-daemon.c
branches/indexer-split/src/trackerd/tracker-daemon.h
branches/indexer-split/src/trackerd/tracker-db.c
branches/indexer-split/src/trackerd/tracker-db.h
branches/indexer-split/src/trackerd/tracker-dbus.c
branches/indexer-split/src/trackerd/tracker-dbus.h
branches/indexer-split/src/trackerd/tracker-main.c
branches/indexer-split/src/trackerd/tracker-main.h
branches/indexer-split/src/trackerd/tracker-processor.c
branches/indexer-split/src/trackerd/tracker-processor.h
branches/indexer-split/src/trackerd/tracker-search.c
branches/indexer-split/src/trackerd/tracker-search.h
branches/indexer-split/src/trackerd/tracker-status.c
branches/indexer-split/src/trackerd/tracker-status.h
branches/indexer-split/src/trackerd/tracker-utils.c
branches/indexer-split/src/trackerd/tracker-utils.h
Modified: branches/indexer-split/src/libtracker-db/tracker-db-manager.c
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-manager.c (original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-manager.c Mon Jul 14 13:28:16 2008
@@ -2150,6 +2150,20 @@
return NULL;
}
+static void
+db_manager_remove_all (void)
+{
+ guint i;
+
+ g_message ("Removing all database files");
+
+ for (i = 0; i < G_N_ELEMENTS (dbs); i++) {
+ g_message ("Removing database:'%s'",
+ dbs[i].abs_filename);
+ g_unlink (dbs[i].abs_filename);
+ }
+}
+
GType
tracker_db_get_type (void)
{
@@ -2298,13 +2312,12 @@
*first_time = TRUE;
}
- g_message ("Removing database files for reindex");
-
- for (i = 0; i < G_N_ELEMENTS (dbs); i++) {
- g_message ("Removing database:'%s'",
- dbs[i].abs_filename);
- g_unlink (dbs[i].abs_filename);
- }
+ /* We call an internal version of this function here
+ * because at the time 'initialized' = FALSE and that
+ * will cause errors and do nothing.
+ */
+ g_message ("Cleaning up database files for reindex");
+ db_manager_remove_all ();
/* In cases where we re-init this module, make sure
* we have cleaned up the ontology before we load all
@@ -2412,6 +2425,14 @@
initialized = FALSE;
}
+void
+tracker_db_manager_remove_all (void)
+{
+ g_return_if_fail (initialized != FALSE);
+
+ db_manager_remove_all ();
+}
+
const gchar *
tracker_db_manager_get_file (TrackerDB db)
{
@@ -2556,28 +2577,3 @@
return iface;
}
-
-/*
-TrackerDBInterface *
-tracker_db_manager_get_db_interface_content (TrackerDBInterface *iface)
-{
- guint i;
-
- g_return_val_if_fail (initialized != FALSE, NULL);
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (iface), NULL);
-
- for (i = 0; i < G_N_ELEMENTS (dbs); i++) {
- if (dbs[i].iface != iface) {
- continue;
- }
-
- if (i == TRACKER_DB_FILE_METADATA) {
- return tracker_db_manager_get_db_interface (TRACKER_DB_FILE_CONTENTS);
- } else if (i == TRACKER_DB_EMAIL_METADATA) {
- return tracker_db_manager_get_db_interface (TRACKER_DB_EMAIL_CONTENTS);
- }
- }
-
- return NULL;
-}
-*/
Modified: branches/indexer-split/src/libtracker-db/tracker-db-manager.h
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-manager.h (original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-manager.h Mon Jul 14 13:28:16 2008
@@ -55,6 +55,7 @@
gboolean *first_time);
void tracker_db_manager_shutdown (void);
+void tracker_db_manager_remove_all (void);
void tracker_db_manager_close_all (void);
const gchar *tracker_db_manager_get_file (TrackerDB db);
@@ -64,10 +65,7 @@
tracker_db_manager_get_db_interfaces (gint num, ...);
TrackerDBInterface *
tracker_db_manager_get_db_interface_by_service (const gchar *service);
-/*
-TrackerDBInterface *
- tracker_db_manager_get_db_interface_content (TrackerDBInterface *iface);
-*/
+
G_END_DECLS
#endif /* __TRACKER_DB_MANAGER_H__ */
Modified: branches/indexer-split/src/trackerd/tracker-crawler.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-crawler.c (original)
+++ branches/indexer-split/src/trackerd/tracker-crawler.c Mon Jul 14 13:28:16 2008
@@ -81,6 +81,7 @@
};
enum {
+ ALL_SENT,
FINISHED,
LAST_SIGNAL
};
@@ -110,6 +111,15 @@
object_class->finalize = crawler_finalize;
+ signals[ALL_SENT] =
+ g_signal_new ("all-sent",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
signals[FINISHED] =
g_signal_new ("finished",
G_TYPE_FROM_CLASS (klass),
@@ -592,7 +602,10 @@
if (!queue || !module_name) {
g_message ("No file queues to process");
+
+ g_signal_emit (crawler, signals[ALL_SENT], 0);
crawler->private->files_queue_handle_id = 0;
+
return FALSE;
}
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 Mon Jul 14 13:28:16 2008
@@ -35,22 +35,18 @@
#include "tracker-dbus.h"
#include "tracker-daemon.h"
#include "tracker-db.h"
+#include "tracker-main.h"
#include "tracker-status.h"
#include "tracker-marshal.h"
#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TRACKER_TYPE_DAEMON, TrackerDaemonPriv))
typedef struct {
- DBusGProxy *fd_proxy;
- TrackerConfig *config;
- Tracker *tracker;
-} TrackerDaemonPriv;
+ DBusGProxy *fd_proxy;
-enum {
- PROP_0,
- PROP_CONFIG,
- PROP_TRACKER
-};
+ TrackerConfig *config;
+ TrackerProcessor *processor;
+} TrackerDaemonPriv;
enum {
DAEMON_INDEX_STATE_CHANGE,
@@ -59,11 +55,7 @@
LAST_SIGNAL
};
-static void daemon_finalize (GObject *object);
-static void daemon_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec);
+static void daemon_finalize (GObject *object);
static guint signals[LAST_SIGNAL] = {0};
@@ -77,21 +69,6 @@
object_class = G_OBJECT_CLASS (klass);
object_class->finalize = daemon_finalize;
- object_class->set_property = daemon_set_property;
-
- g_object_class_install_property (object_class,
- PROP_CONFIG,
- g_param_spec_object ("config",
- "Config",
- "TrackerConfig object",
- tracker_config_get_type (),
- G_PARAM_WRITABLE));
- g_object_class_install_property (object_class,
- PROP_TRACKER,
- g_param_spec_pointer ("tracker",
- "Tracker",
- "Tracker object",
- G_PARAM_WRITABLE));
signals[DAEMON_INDEX_STATE_CHANGE] =
g_signal_new ("index-state-change",
@@ -101,13 +78,13 @@
NULL, NULL,
tracker_marshal_VOID__STRING_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN_BOOLEAN,
G_TYPE_NONE,
- 7,
- G_TYPE_STRING,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
+ 7,
+ G_TYPE_STRING,
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN,
G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
G_TYPE_BOOLEAN);
signals[DAEMON_INDEX_FINISHED] =
g_signal_new ("index-finished",
@@ -117,7 +94,7 @@
NULL, NULL,
g_cclosure_marshal_VOID__INT,
G_TYPE_NONE,
- 1,
+ 1,
G_TYPE_INT);
signals[DAEMON_INDEX_PROGRESS] =
g_signal_new ("index-progress",
@@ -127,9 +104,9 @@
NULL, NULL,
tracker_marshal_VOID__STRING_STRING_INT_INT_INT,
G_TYPE_NONE,
- 5,
- G_TYPE_STRING,
- G_TYPE_STRING,
+ 5,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT,
G_TYPE_INT);
@@ -146,114 +123,46 @@
daemon_finalize (GObject *object)
{
TrackerDaemonPriv *priv;
-
+
priv = GET_PRIV (object);
if (priv->fd_proxy) {
g_object_unref (priv->fd_proxy);
}
- if (priv->config) {
- g_object_unref (priv->config);
- }
+ g_object_unref (priv->processor);
+ g_object_unref (priv->config);
G_OBJECT_CLASS (tracker_daemon_parent_class)->finalize (object);
}
-static void
-daemon_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TrackerDaemonPriv *priv;
-
- priv = GET_PRIV (object);
-
- switch (param_id) {
- case PROP_CONFIG:
- tracker_daemon_set_config (TRACKER_DAEMON (object),
- g_value_get_object (value));
- break;
- case PROP_TRACKER:
- tracker_daemon_set_tracker (TRACKER_DAEMON (object),
- g_value_get_pointer (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
TrackerDaemon *
-tracker_daemon_new (TrackerConfig *config,
- Tracker *tracker)
+tracker_daemon_new (TrackerConfig *config,
+ TrackerProcessor *processor)
{
- TrackerDaemon *object;
+ TrackerDaemon *object;
+ TrackerDaemonPriv *priv;
g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
+ g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), NULL);
- object = g_object_new (TRACKER_TYPE_DAEMON,
- "config", config,
- "tracker", tracker,
- NULL);
-
- return object;
-}
-
-void
-tracker_daemon_set_config (TrackerDaemon *object,
- TrackerConfig *config)
-{
- TrackerDaemonPriv *priv;
-
- g_return_if_fail (TRACKER_IS_DAEMON (object));
- g_return_if_fail (TRACKER_IS_CONFIG (config));
+ object = g_object_new (TRACKER_TYPE_DAEMON, NULL);
priv = GET_PRIV (object);
- /* Ref now in case it is the same object we are about to
- * unref.
- */
- g_object_ref (config);
-
- if (priv->config) {
- g_object_unref (priv->config);
- }
-
- if (config) {
- priv->config = config;
- } else {
- priv->config = NULL;
- }
-
- g_object_notify (G_OBJECT (object), "config");
-}
-
-void
-tracker_daemon_set_tracker (TrackerDaemon *object,
- Tracker *tracker)
-{
- TrackerDaemonPriv *priv;
+ priv->config = g_object_ref (config);
+ priv->processor = g_object_ref (processor);
- g_return_if_fail (TRACKER_IS_DAEMON (object));
- g_return_if_fail (tracker != NULL);
-
- priv = GET_PRIV (object);
-
- priv->tracker = tracker;
-
- g_object_notify (G_OBJECT (object), "tracker");
+ return object;
}
/*
* Functions
*/
void
-tracker_daemon_get_version (TrackerDaemon *object,
- DBusGMethodInvocation *context,
- GError **error)
+tracker_daemon_get_version (TrackerDaemon *object,
+ DBusGMethodInvocation *context,
+ GError **error)
{
guint request_id;
gint major = 0;
@@ -267,7 +176,7 @@
tracker_dbus_request_new (request_id,
"DBus request to get daemon version");
-
+
sscanf (VERSION, "%d.%d.%d", &major, &minor, &revision);
str = g_strdup_printf ("%d%d%d", major, minor, revision);
version = atoi (str);
@@ -279,9 +188,9 @@
}
void
-tracker_daemon_get_status (TrackerDaemon *object,
- DBusGMethodInvocation *context,
- GError **error)
+tracker_daemon_get_status (TrackerDaemon *object,
+ DBusGMethodInvocation *context,
+ GError **error)
{
TrackerDaemonPriv *priv;
gchar *status;
@@ -363,7 +272,7 @@
/* Here it doesn't matter which one we ask, as long as it has common.db
* attached. The service ones are cached connections, so we can use
* those instead of asking for an individual-file connection (like what
- * the original code had)
+ * the original code had)
*/
/* iface = tracker_db_manager_get_db_interfaceX (TRACKER_DB_COMMON); */
@@ -394,12 +303,11 @@
{
TrackerDaemonPriv *priv;
guint request_id;
- gboolean signal_state_change = FALSE;
- GError *actual_error = NULL;
+ GError *actual_error = NULL;
/* FIXME: Shouldn't we just make the TrackerConfig module a
* DBus object instead so values can be tweaked in real time
- * over the bus?
+ * over the bus?
*/
request_id = tracker_dbus_get_next_request_id ();
@@ -415,20 +323,19 @@
value ? "true" : "false");
if (strcasecmp (option, "Pause") == 0) {
- signal_state_change = TRUE;
- priv->tracker->pause_manual = value;
-
- if (value) {
- g_message ("Tracker daemon has been paused by user");
- } else {
- g_message ("Tracker daemon has been resumed by user");
- }
+ tracker_set_is_paused_manually (value);
} else if (strcasecmp (option, "FastMerges") == 0) {
tracker_config_set_fast_merges (priv->config, value);
g_message ("Fast merges set to %d", value);
} else if (strcasecmp (option, "EnableIndexing") == 0) {
- signal_state_change = TRUE;
+ /* FIXME: Ideally we should be picking up the
+ * "nofify::enable-indexing" change on the
+ * priv->config in the tracker-main.c module to do
+ * the signal change and to set the daemon to
+ * readonly mode.
+ */
tracker_config_set_enable_indexing (priv->config, value);
+ tracker_set_is_readonly (value);
g_message ("Enable indexing set to %d", value);
} else if (strcasecmp (option, "EnableWatching") == 0) {
tracker_config_set_enable_watches (priv->config, value);
@@ -438,10 +345,10 @@
g_message ("Extra memory usage set to %d", !value);
} else if (strcasecmp (option, "IndexFileContents") == 0) {
tracker_config_set_enable_content_indexing (priv->config, value);
- g_message ("Index file contents set to %d", value);
+ g_message ("Index file contents set to %d", value);
} else if (strcasecmp (option, "GenerateThumbs") == 0) {
tracker_config_set_enable_thumbnails (priv->config, value);
- g_message ("Generate thumbnails set to %d", value);
+ g_message ("Generate thumbnails set to %d", value);
} else if (strcasecmp (option, "IndexMountedDirectories") == 0) {
tracker_config_set_index_mounted_directories (priv->config, value);
g_message ("Indexing mounted directories set to %d", value);
@@ -455,25 +362,12 @@
tracker_config_set_disable_indexing_on_battery_init (priv->config, !value);
g_message ("Disable initial index sweep on battery set to %d", !value);
} else {
- g_set_error (&actual_error,
- TRACKER_DBUS_ERROR,
+ g_set_error (&actual_error,
+ TRACKER_DBUS_ERROR,
0,
"Option does not exist");
}
- if (signal_state_change) {
- /* Signal state change */
- g_signal_emit_by_name (object,
- "index-state-change",
- tracker_status_get_as_string (),
- priv->tracker->first_time_index,
- priv->tracker->in_merge,
- priv->tracker->pause_manual,
- tracker_should_pause_on_battery (),
- priv->tracker->pause_io,
- tracker_config_get_enable_indexing (priv->config));
- }
-
if (!actual_error) {
dbus_g_method_return (context);
} else {
@@ -497,7 +391,7 @@
/* FIXME: Shouldn't we just make the TrackerConfig module a
* DBus object instead so values can be tweaked in real time
- * over the bus?
+ * over the bus?
*/
request_id = tracker_dbus_get_next_request_id ();
@@ -522,8 +416,8 @@
tracker_config_set_max_words_to_index (priv->config, value);
g_message ("Maxinum number of unique words set to %d", value);
} else {
- g_set_error (&actual_error,
- TRACKER_DBUS_ERROR,
+ g_set_error (&actual_error,
+ TRACKER_DBUS_ERROR,
0,
"Option does not exist");
}
@@ -558,7 +452,7 @@
g_message ("Tracker daemon attempting to shutdown");
- priv->tracker->reindex = reindex;
+ tracker_set_reindex_on_shutdown (reindex);
g_timeout_add (500, (GSourceFunc) tracker_shutdown, NULL);
@@ -583,32 +477,29 @@
priv = GET_PRIV (object);
/* Signal state change */
- g_signal_emit_by_name (object,
- "index-state-change",
- tracker_status_get_as_string (),
- priv->tracker->first_time_index,
- priv->tracker->in_merge,
- priv->tracker->pause_manual,
- tracker_should_pause_on_battery (),
- priv->tracker->pause_io,
- tracker_config_get_enable_indexing (priv->config));
+ tracker_status_signal ();
/* Signal progress */
- g_signal_emit_by_name (object,
- "index-progress",
- "Files",
+ g_signal_emit_by_name (object,
+ "index-progress",
+ "Files",
"",
- priv->tracker->index_count,
- priv->tracker->folders_processed,
- priv->tracker->folders_count);
-
+ tracker_processor_get_files_total (priv->processor),
+ tracker_processor_get_directories_found (priv->processor),
+ tracker_processor_get_directories_total (priv->processor));
+
+#if 1
+ /* FIXME: We need a way of knowing WHAT service we have a
+ * count for, i.e. emails, files, etc.
+ */
g_signal_emit_by_name (object,
- "index-progress",
- "Emails",
+ "index-progress",
+ "Emails",
"",
- priv->tracker->index_count,
- priv->tracker->mbox_processed,
- priv->tracker->mbox_count);
+ 0, /*priv->tracker->index_count,*/
+ 0, /*priv->tracker->mbox_processed,*/
+ 0); /*priv->tracker->mbox_count);*/
+#endif
dbus_g_method_return (context);
Modified: branches/indexer-split/src/trackerd/tracker-daemon.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-daemon.h (original)
+++ branches/indexer-split/src/trackerd/tracker-daemon.h Mon Jul 14 13:28:16 2008
@@ -26,7 +26,7 @@
#include <libtracker-common/tracker-config.h>
-#include "tracker-main.h"
+#include "tracker-processor.h"
#define TRACKER_DAEMON_SERVICE "org.freedesktop.Tracker"
#define TRACKER_DAEMON_PATH "/org/freedesktop/Tracker"
@@ -54,11 +54,7 @@
GType tracker_daemon_get_type (void);
TrackerDaemon *tracker_daemon_new (TrackerConfig *config,
- Tracker *tracker);
-void tracker_daemon_set_config (TrackerDaemon *object,
- TrackerConfig *config);
-void tracker_daemon_set_tracker (TrackerDaemon *object,
- Tracker *tracker);
+ TrackerProcessor *processor);
void tracker_daemon_get_version (TrackerDaemon *object,
DBusGMethodInvocation *context,
GError **error);
Modified: branches/indexer-split/src/trackerd/tracker-db.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db.c (original)
+++ branches/indexer-split/src/trackerd/tracker-db.c Mon Jul 14 13:28:16 2008
@@ -32,6 +32,7 @@
#include <libtracker-common/tracker-file-utils.h>
#include <libtracker-common/tracker-nfs-lock.h>
+#include <libtracker-common/tracker-parser.h>
#include <libtracker-common/tracker-type-utils.h>
#include <libtracker-common/tracker-utils.h>
@@ -44,9 +45,13 @@
#include "tracker-xesam-manager.h"
#include "tracker-main.h"
-#define ZLIBBUFSIZ 8192
+#define ZLIBBUFSIZ 8192
-extern Tracker *tracker;
+static gboolean initialized;
+
+static TrackerConfig *config;
+static TrackerLanguage *language;
+static TrackerIndexer *file_index;
static gchar *
compress_string (const gchar *ptr,
@@ -228,10 +233,10 @@
old_table = tracker_parser_text (old_table,
old_value,
tracker_field_get_weight (def),
- tracker->language,
- tracker_config_get_max_words_to_index (tracker->config),
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_words_to_index (config),
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
}
@@ -241,10 +246,10 @@
new_table = tracker_parser_text (new_table,
new_value,
tracker_field_get_weight (def),
- tracker->language,
- tracker_config_get_max_words_to_index (tracker->config),
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_words_to_index (config),
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
}
@@ -573,50 +578,6 @@
}
*/
-static gint
-get_memory_usage (void)
-{
-#if defined(__linux__)
- gint fd, length, mem = 0;
- gchar buffer[8192];
- gchar *stat_file;
- gchar **terms;
-
- stat_file = g_strdup_printf ("/proc/%d/stat", tracker->pid);
- fd = g_open (stat_file, O_RDONLY);
- g_free (stat_file);
-
- if (fd ==-1) {
- return 0;
- }
-
- length = read (fd, buffer, 8192);
- buffer[length] = 0;
- close (fd);
-
- terms = g_strsplit (buffer, " ", -1);
-
- if (terms) {
- gint i;
-
- for (i = 0; i < 24; i++) {
- if (!terms[i]) {
- break;
- }
-
- if (i == 23) {
- mem = 4 * atoi (terms[23]);
- }
- }
- }
-
- g_strfreev (terms);
-
- return mem;
-#endif
- return 0;
-}
-
static GArray *
db_create_array_of_services (void)
{
@@ -641,15 +602,38 @@
}
void
-tracker_db_init (void)
-{
- /* Nothing to do? - maybe create connections? */
+tracker_db_init (TrackerConfig *this_config,
+ TrackerLanguage *this_language,
+ TrackerIndexer *this_file_index)
+{
+ g_return_if_fail (TRACKER_IS_CONFIG (this_config));
+ g_return_if_fail (TRACKER_IS_LANGUAGE (this_language));
+ g_return_if_fail (TRACKER_IS_INDEXER (this_file_index));
+
+ if (initialized) {
+ return;
+ }
+
+ config = g_object_ref (this_config);
+ language = g_object_ref (this_language);
+ file_index = g_object_ref (this_file_index);
}
void
tracker_db_shutdown (void)
{
- /* Nothing to do? */
+ if (!initialized) {
+ return;
+ }
+
+ g_object_unref (file_index);
+ file_index = NULL;
+
+ g_object_unref (language);
+ language = NULL;
+
+ g_object_unref (config);
+ config = NULL;
}
gboolean
@@ -774,9 +758,9 @@
g_return_val_if_fail (offset >= 0, NULL);
array = tracker_parser_text_into_array (search_string,
- tracker->language,
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config));
+ language,
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config));
result_set = tracker_db_exec_proc (iface,
"GetRelatedServiceIDs",
@@ -803,9 +787,9 @@
}
tree = tracker_query_tree_new (search_string,
- tracker->file_index,
- tracker->config,
- tracker->language,
+ file_index,
+ config,
+ language,
services);
hits = tracker_query_tree_get_hits (tree, offset, limit);
result = NULL;
@@ -964,9 +948,9 @@
services = db_create_array_of_services ();
tree = tracker_query_tree_new (text,
- tracker->file_index,
- tracker->config,
- tracker->language,
+ file_index,
+ config,
+ language,
services);
hits = tracker_query_tree_get_hits (tree, 0, 0);
@@ -1060,9 +1044,9 @@
services = db_create_array_of_services ();
tree = tracker_query_tree_new (text,
- tracker->file_index,
- tracker->config,
- tracker->language,
+ file_index,
+ config,
+ language,
services);
hits = tracker_query_tree_get_hits (tree, 0, 0);
@@ -1158,9 +1142,9 @@
services = db_create_array_of_services ();
tree = tracker_query_tree_new (text,
- tracker->file_index,
- tracker->config,
- tracker->language,
+ file_index,
+ config,
+ language,
services);
hits = tracker_query_tree_get_hits (tree, 0, 0);
@@ -1517,9 +1501,9 @@
gchar *mvalue;
mvalue = tracker_parser_text_to_string (values[i],
- tracker->language,
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
FALSE,
FALSE,
FALSE);
@@ -1549,9 +1533,9 @@
}
mvalue = tracker_parser_text_to_string (values[i],
- tracker->language,
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
@@ -1582,10 +1566,10 @@
hash_table = tracker_parser_text (hash_table,
values[i],
tracker_field_get_weight (def),
- tracker->language,
- tracker_config_get_max_words_to_index (tracker->config),
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_words_to_index (config),
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
}
@@ -1622,9 +1606,9 @@
}
mvalue = tracker_parser_text_to_string (values[i],
- tracker->language,
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
@@ -1856,9 +1840,9 @@
}
mvalue = tracker_parser_text_to_string (values[i],
- tracker->language,
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
@@ -1906,9 +1890,9 @@
}
mvalue = tracker_parser_text_to_string (values[i],
- tracker->language,
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
@@ -2131,9 +2115,9 @@
case TRACKER_FIELD_TYPE_INDEX:
case TRACKER_FIELD_TYPE_STRING:
mvalue = tracker_parser_text_to_string (value,
- tracker->language,
- tracker_config_get_max_word_length (tracker->config),
- tracker_config_get_min_word_length (tracker->config),
+ language,
+ tracker_config_get_max_word_length (config),
+ tracker_config_get_min_word_length (config),
tracker_field_get_filtered (def),
tracker_field_get_filtered (def),
tracker_field_get_delimited (def));
@@ -2876,7 +2860,7 @@
g_free (parent);
}
- if (tracker_config_get_enable_xesam (tracker->config)) {
+ if (tracker_config_get_enable_xesam (config)) {
/* FIXME: Shouldn't this be the common interface? */
db_create_event (iface, sid, "Create");
}
@@ -3917,31 +3901,3 @@
g_object_unref (result_set);
}
}
-
-gboolean
-tracker_db_regulate_transactions (TrackerDBInterface *iface,
- gint interval)
-{
- g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (iface), FALSE);
-
- tracker->index_count++;
-
- if ((tracker->index_count == 1 ||
- tracker->index_count == interval ||
- (tracker->index_count >= interval &&
- tracker->index_count % interval == 0))) {
- if (tracker->index_count > 1) {
- tracker_db_interface_end_transaction (iface);
- tracker_db_interface_start_transaction (iface);
-
- g_message ("Current memory usage is %d, word count %d and hits %d",
- get_memory_usage (),
- 0, /* was tracker->word_count, */
- 0); /* was tracker->word_detail_count */
- }
-
- return TRUE;
- }
-
- return FALSE;
-}
Modified: branches/indexer-split/src/trackerd/tracker-db.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-db.h (original)
+++ branches/indexer-split/src/trackerd/tracker-db.h Mon Jul 14 13:28:16 2008
@@ -26,8 +26,10 @@
#include <glib.h>
+#include <libtracker-common/tracker-config.h>
#include <libtracker-common/tracker-field.h>
#include <libtracker-common/tracker-field-data.h>
+#include <libtracker-common/tracker-language.h>
#include <libtracker-common/tracker-ontology.h>
#include <libtracker-db/tracker-db-interface.h>
@@ -38,7 +40,9 @@
G_BEGIN_DECLS
-void tracker_db_init (void);
+void tracker_db_init (TrackerConfig *this_config,
+ TrackerLanguage *this_language,
+ TrackerIndexer *this_file_index);
void tracker_db_shutdown (void);
/* Operations for TrackerDBInterface */
@@ -61,10 +65,6 @@
void tracker_db_set_option_int (const gchar *option,
gint value);
-/* High level transactions things */
-gboolean tracker_db_regulate_transactions (TrackerDBInterface *iface,
- gint interval);
-
/* Metadata API */
gchar * tracker_db_metadata_get_related_names (TrackerDBInterface *iface,
const gchar *name);
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 Mon Jul 14 13:28:16 2008
@@ -80,25 +80,19 @@
return TRUE;
}
-static gpointer
+static void
dbus_register_object (DBusGConnection *connection,
DBusGProxy *proxy,
- GType object_type,
+ GObject *object,
const DBusGObjectInfo *info,
const gchar *path)
{
- GObject *object;
-
g_message ("Registering DBus object...");
g_message (" Path:'%s'", path);
- g_message (" Type:'%s'", g_type_name (object_type));
-
- object = g_object_new (object_type, NULL);
+ g_message (" Type:'%s'", G_OBJECT_TYPE_NAME (object));
- dbus_g_object_type_install_info (object_type, info);
+ dbus_g_object_type_install_info (G_OBJECT_TYPE (object), info);
dbus_g_connection_register_g_object (connection, path, object);
-
- return object;
}
static void
@@ -196,11 +190,18 @@
}
gboolean
-tracker_dbus_register_objects (Tracker *tracker)
+tracker_dbus_register_objects (TrackerConfig *config,
+ TrackerLanguage *language,
+ TrackerIndexer *file_index,
+ TrackerIndexer *email_index,
+ TrackerProcessor *processor)
{
- GObject *object;
+ gpointer object;
- g_return_val_if_fail (tracker != NULL, FALSE);
+ g_return_val_if_fail (TRACKER_IS_CONFIG (config), FALSE);
+ g_return_val_if_fail (TRACKER_IS_LANGUAGE (language), FALSE);
+ g_return_val_if_fail (TRACKER_IS_INDEXER (file_index), FALSE);
+ g_return_val_if_fail (TRACKER_IS_INDEXER (email_index), FALSE);
if (!connection || !proxy) {
g_critical ("DBus support must be initialized before registering objects!");
@@ -208,87 +209,98 @@
}
/* Add org.freedesktop.Tracker */
- if (!(object = dbus_register_object (connection,
- proxy,
- TRACKER_TYPE_DAEMON,
- &dbus_glib_tracker_daemon_object_info,
- TRACKER_DAEMON_PATH))) {
- return FALSE;
- }
+ object = tracker_daemon_new (config, processor);
+ if (!object) {
+ g_critical ("Could not create TrackerDaemon object to register");
+ return FALSE;
+ }
- g_object_set (object, "config", tracker->config, NULL);
- g_object_set (object, "tracker", tracker, NULL);
+ dbus_register_object (connection,
+ proxy,
+ G_OBJECT (object),
+ &dbus_glib_tracker_daemon_object_info,
+ TRACKER_DAEMON_PATH);
objects = g_slist_prepend (objects, object);
/* Add org.freedesktop.Tracker.Files */
- if (!(object = dbus_register_object (connection,
- proxy,
- TRACKER_TYPE_FILES,
- &dbus_glib_tracker_files_object_info,
- TRACKER_FILES_PATH))) {
- return FALSE;
- }
+ object = tracker_files_new ();
+ if (!object) {
+ g_critical ("Could not create TrackerFiles object to register");
+ return FALSE;
+ }
+ dbus_register_object (connection,
+ proxy,
+ G_OBJECT (object),
+ &dbus_glib_tracker_files_object_info,
+ TRACKER_FILES_PATH);
objects = g_slist_prepend (objects, object);
/* Add org.freedesktop.Tracker.Keywords */
- if (!(object = dbus_register_object (connection,
- proxy,
- TRACKER_TYPE_KEYWORDS,
- &dbus_glib_tracker_keywords_object_info,
- TRACKER_KEYWORDS_PATH))) {
- return FALSE;
- }
+ object = tracker_keywords_new ();
+ if (!object) {
+ g_critical ("Could not create TrackerKeywords object to register");
+ return FALSE;
+ }
+ dbus_register_object (connection,
+ proxy,
+ G_OBJECT (object),
+ &dbus_glib_tracker_keywords_object_info,
+ TRACKER_KEYWORDS_PATH);
objects = g_slist_prepend (objects, object);
/* Add org.freedesktop.Tracker.Metadata */
- if (!(object = dbus_register_object (connection,
- proxy,
- TRACKER_TYPE_METADATA,
- &dbus_glib_tracker_metadata_object_info,
- TRACKER_METADATA_PATH))) {
- return FALSE;
- }
+ object = tracker_metadata_new ();
+ if (!object) {
+ g_critical ("Could not create TrackerMetadata object to register");
+ return FALSE;
+ }
+ dbus_register_object (connection,
+ proxy,
+ G_OBJECT (object),
+ &dbus_glib_tracker_metadata_object_info,
+ TRACKER_METADATA_PATH);
objects = g_slist_prepend (objects, object);
/* Add org.freedesktop.Tracker.Search */
- if (!(object = dbus_register_object (connection,
- proxy,
- TRACKER_TYPE_SEARCH,
- &dbus_glib_tracker_search_object_info,
- TRACKER_SEARCH_PATH))) {
- return FALSE;
- }
+ object = tracker_search_new (config, language, file_index, email_index);
+ if (!object) {
+ g_critical ("Could not create TrackerSearch object to register");
+ return FALSE;
+ }
- g_object_set (object, "config", tracker->config, NULL);
- g_object_set (object, "language", tracker->language, NULL);
- g_object_set (object, "file-index", tracker->file_index, NULL);
- g_object_set (object, "email-index", tracker->email_index, NULL);
- objects = g_slist_prepend (objects, object);
+ dbus_register_object (connection,
+ proxy,
+ G_OBJECT (object),
+ &dbus_glib_tracker_search_object_info,
+ TRACKER_SEARCH_PATH);
+ objects = g_slist_prepend (objects, object);
/* Register the XESAM object if enabled */
- if (tracker_config_get_enable_xesam (tracker->config)) {
- /* Add org.freedesktop.xesam.Search */
- if (!(object = dbus_register_object (connection,
- proxy,
- TRACKER_TYPE_XESAM,
- &dbus_glib_tracker_xesam_object_info,
- TRACKER_XESAM_PATH))) {
+ if (tracker_config_get_enable_xesam (config)) {
+ object = tracker_xesam_new ();
+ if (!object) {
+ g_critical ("Could not create TrackerXesam object to register");
return FALSE;
}
-
+
+ dbus_register_object (connection,
+ proxy,
+ G_OBJECT (object),
+ &dbus_glib_tracker_xesam_object_info,
+ TRACKER_XESAM_PATH);
+ objects = g_slist_prepend (objects, object);
+
dbus_g_proxy_add_signal (proxy, "NameOwnerChanged",
G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_INVALID);
dbus_g_proxy_connect_signal (proxy, "NameOwnerChanged",
G_CALLBACK (tracker_xesam_name_owner_changed),
- g_object_ref (object),
+ g_object_ref (G_OBJECT (object)),
dbus_name_owner_changed);
-
- objects = g_slist_prepend (objects, object);
}
/* Reverse list since we added objects at the top each time */
Modified: branches/indexer-split/src/trackerd/tracker-dbus.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-dbus.h (original)
+++ branches/indexer-split/src/trackerd/tracker-dbus.h Mon Jul 14 13:28:16 2008
@@ -24,19 +24,24 @@
#include <glib.h>
-#include <libtracker-common/tracker-config.h>
#include <dbus/dbus-glib-bindings.h>
-#include <libtracker-db/tracker-db-interface.h>
+#include <libtracker-common/tracker-config.h>
+#include <libtracker-common/tracker-language.h>
-#include "tracker-main.h"
+#include "tracker-indexer.h"
+#include "tracker-processor.h"
G_BEGIN_DECLS
-gboolean tracker_dbus_init (TrackerConfig *config);
+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);
+gboolean tracker_dbus_register_objects (TrackerConfig *config,
+ TrackerLanguage *language,
+ TrackerIndexer *file_index,
+ TrackerIndexer *email_index,
+ TrackerProcessor *processor);
+GObject *tracker_dbus_get_object (GType type);
DBusGProxy *tracker_dbus_indexer_get_proxy (void);
G_END_DECLS
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 Mon Jul 14 13:28:16 2008
@@ -32,6 +32,7 @@
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
+#include <time.h>
#include <glib/gstdio.h>
#include <glib/gi18n.h>
@@ -52,6 +53,7 @@
#include "tracker-dbus.h"
#include "tracker-indexer.h"
#include "tracker-indexer-client.h"
+#include "tracker-main.h"
#include "tracker-monitor.h"
#include "tracker-processor.h"
#include "tracker-status.h"
@@ -63,53 +65,6 @@
#include "mingw-compat.h"
#endif
-/*
- * The workflow to process files and notified file change events are
- * as follows:
- *
- * 1) File scan or file notification change (as reported by
- * FAM/iNotify).
-
- * 2) File Scheduler (we wait until a file's changes have stabilised
- * (NB not neccesary with inotify))
-
- * 3) We process a file's basic metadata (stat) and determine what
- * needs doing in a seperate thread.
-
- * 4) We extract CPU intensive embedded metadata/text/thumbnail in
- * another thread and save changes to the DB
- *
- *
- * Three threads are used to fully process a file event. Files or
- * events to be processed are placed on asynchronous queues where
- * another thread takes over the work.
- *
- * The main thread is very lightweight and no cpu intensive or heavy
- * file I/O (or heavy DB access) is permitted here after
- * initialisation of the daemon. This ensures the main thread can
- * handle events and DBUS requests in a timely low latency manner.
- *
- * The File Process thread is for moderate CPU intensive load and I/O
- * and involves calls to stat() and simple fast queries on the DB.
- * The main thread queues files to be processed by this thread via
- * the file_process async queue. As no heavily CPU intensive activity
- * occurs here, we can quickly keep the DB representation of the
- * watched file system up to date. Once a file has been processed
- * here it is then placed on the file metadata queue which is handled
- * by the File Metadata thread.
- *
- * The File Metadata thread is a low priority thread to handle the
- * highly CPU intensive parts. During this phase, embedded metadata
- * is extracted from files and if a text filter and/or thumbnailer is
- * available for the mime type of the file then these will be spawned
- * synchronously. Finally all metadata (including file's text
- * contents and path to thumbnails) is saved to the DB.
- *
- * All responses including user initiated requests are queued by the
- * main thread onto an asynchronous queue where potentially multiple
- * threads are waiting to process them.
- */
-
#define ABOUT \
"Tracker " VERSION "\n" \
"Copyright (c) 2005-2008 Jamie McCracken (jamiemcc gnome org)\n"
@@ -127,9 +82,6 @@
TRACKER_RUNNING_MAIN_INSTANCE
} TrackerRunningLevel;
-/* Public */
-Tracker *tracker;
-
/* Private */
static GMainLoop *main_loop;
static gchar *log_filename;
@@ -138,6 +90,13 @@
static gchar *user_data_dir;
static gchar *sys_tmp_dir;
+static gboolean is_running;
+static gboolean is_readonly;
+static gboolean is_first_time_index;
+static gboolean is_paused_manually;
+static gboolean in_merge;
+static gboolean reindex_on_shutdown;
+
/* Private command line parameters */
static gint verbosity = -1;
static gint initial_sleep = -1;
@@ -146,9 +105,9 @@
static gchar **monitors_to_include;
static gchar **crawl_dirs;
-static gboolean reindex;
+static gboolean force_reindex;
static gboolean disable_indexing;
-static gchar *language;
+static gchar *language_code;
static GOptionEntry entries_daemon[] = {
{ "verbosity", 'v', 0,
@@ -180,15 +139,15 @@
};
static GOptionEntry entries_indexer[] = {
- { "reindex", 'r', 0,
- G_OPTION_ARG_NONE, &reindex,
+ { "force-reindex", 'r', 0,
+ G_OPTION_ARG_NONE, &force_reindex,
N_("Force a re-index of all content"),
NULL },
{ "disable-indexing", 'n', 0,
G_OPTION_ARG_NONE, &disable_indexing,
N_("Disable any indexing and monitoring"), NULL },
{ "language", 'l', 0,
- G_OPTION_ARG_STRING, &language,
+ G_OPTION_ARG_STRING, &language_code,
N_("Language to use for stemmer and stop words "
"(ISO 639-1 2 characters code)"),
NULL },
@@ -213,8 +172,7 @@
static TrackerRunningLevel
check_runtime_level (TrackerConfig *config,
- TrackerHal *hal,
- gboolean first_time_index)
+ TrackerHal *hal)
{
TrackerRunningLevel runlevel;
gchar *lock_file;
@@ -268,7 +226,7 @@
return TRACKER_RUNNING_MAIN_INSTANCE;
}
- if (!first_time_index &&
+ if (!is_first_time_index &&
tracker_config_get_disable_indexing_on_battery (config)) {
g_message ("Battery in use");
g_message ("Config is set to not index on battery");
@@ -280,7 +238,7 @@
* overwritten by the config option to disable or not
* indexing on battery initially.
*/
- if (first_time_index &&
+ if (is_first_time_index &&
tracker_config_get_disable_indexing_on_battery_init (config)) {
g_message ("Battery in use & reindex is needed");
g_message ("Config is set to not index on battery for initial index");
@@ -472,10 +430,10 @@
/*
* Create SQLite databases
*/
- if (!tracker->readonly && reindex) {
+ if (!is_readonly && force_reindex) {
TrackerDBInterface *iface;
- tracker->first_time_index = TRUE;
+ is_first_time_index = TRUE;
/* Reset stats for embedded services if they are being reindexed */
@@ -495,18 +453,18 @@
}
/* Check db integrity if not previously shut down cleanly */
- if (!tracker->readonly &&
- !tracker->first_time_index &&
+ if (!is_readonly &&
+ !is_first_time_index &&
tracker_db_get_option_int ("IntegrityCheck") == 1) {
g_message ("Performing integrity check as the daemon was not shutdown cleanly");
/* FIXME: Finish */
}
- if (!tracker->readonly) {
+ if (!is_readonly) {
tracker_db_set_option_int ("IntegrityCheck", 1);
}
- if (tracker->first_time_index) {
+ if (is_first_time_index) {
tracker_db_set_option_int ("InitialIndex", 1);
}
@@ -516,12 +474,9 @@
static gboolean
initialize_indexers (TrackerConfig *config)
{
- TrackerIndexer *indexer;
- gchar *final_index_name;
+ gchar *final_index_name;
- /*
- * Create index files
- */
+ /* Create index files */
final_index_name = g_build_filename (data_dir, "file-index-final", NULL);
if (g_file_test (final_index_name, G_FILE_TEST_EXISTS) &&
@@ -562,45 +517,12 @@
g_free (final_index_name);
- /* Create indexers */
- indexer = tracker_indexer_new (TRACKER_INDEXER_TYPE_FILES, config);
- if (!indexer) {
- return FALSE;
- }
-
- tracker->file_index = indexer;
-
- indexer = tracker_indexer_new (TRACKER_INDEXER_TYPE_FILES_UPDATE, config);
- if (!indexer) {
- return FALSE;
- }
-
- tracker->file_update_index = indexer;
-
- indexer = tracker_indexer_new (TRACKER_INDEXER_TYPE_EMAILS, config);
- if (!indexer) {
- return FALSE;
- }
-
- tracker->email_index = indexer;
-
return TRUE;
}
static void
shutdown_indexer (void)
{
- if (tracker->file_index) {
- g_object_unref (tracker->file_index);
- }
-
- if (tracker->file_update_index) {
- g_object_unref (tracker->file_update_index);
- }
-
- if (tracker->email_index) {
- g_object_unref (tracker->email_index);
- }
}
static void
@@ -626,9 +548,8 @@
shutdown_directories (void)
{
/* If we are reindexing, just remove the databases */
- if (tracker->reindex) {
- tracker_path_remove (data_dir);
- g_mkdir_with_parents (data_dir, 00755);
+ if (reindex_on_shutdown) {
+ tracker_db_manager_remove_all ();
}
}
@@ -637,7 +558,7 @@
{
DBusGProxy *proxy;
- if (!tracker->is_running) {
+ if (!is_running) {
return FALSE;
}
@@ -656,9 +577,15 @@
GOptionContext *context = NULL;
GOptionGroup *group;
GError *error = NULL;
+ TrackerConfig *config;
+ TrackerLanguage *language;
+ TrackerHal *hal;
+ TrackerProcessor *processor;
+ TrackerIndexer *file_index;
+ TrackerIndexer *file_update_index;
+ TrackerIndexer *email_index;
TrackerRunningLevel runtime_level;
TrackerDBManagerFlags flags;
- TrackerProcessor *processor;
g_type_init ();
@@ -714,11 +641,6 @@
initialize_signal_handler ();
- /* Create struct */
- tracker = g_new0 (Tracker, 1);
-
- tracker->pid = getpid ();
-
/* This makes sure we have all the locations like the data
* dir, user data dir, etc all configured.
*
@@ -729,132 +651,140 @@
initialize_locations ();
/* Initialize major subsystems */
- tracker->config = tracker_config_new ();
- tracker->language = tracker_language_new (tracker->config);
+ config = tracker_config_new ();
+ language = tracker_language_new (config);
#ifdef HAVE_HAL
- tracker->hal = tracker_hal_new ();
+ hal = tracker_hal_new ();
#endif /* HAVE_HAL */
/* Daemon command line arguments */
if (verbosity > -1) {
- tracker_config_set_verbosity (tracker->config, verbosity);
+ tracker_config_set_verbosity (config, verbosity);
}
if (initial_sleep > -1) {
- tracker_config_set_initial_sleep (tracker->config, initial_sleep);
+ tracker_config_set_initial_sleep (config, initial_sleep);
}
if (low_memory) {
- tracker_config_set_low_memory_mode (tracker->config, TRUE);
+ tracker_config_set_low_memory_mode (config, TRUE);
}
if (monitors_to_exclude) {
- tracker_config_add_no_watch_directory_roots (tracker->config,
- monitors_to_exclude);
+ tracker_config_add_no_watch_directory_roots (config, monitors_to_exclude);
}
if (monitors_to_include) {
- tracker_config_add_watch_directory_roots (tracker->config,
- monitors_to_include);
+ tracker_config_add_watch_directory_roots (config, monitors_to_include);
}
if (crawl_dirs) {
- tracker_config_add_crawl_directory_roots (tracker->config, crawl_dirs);
+ tracker_config_add_crawl_directory_roots (config, crawl_dirs);
}
/* Indexer command line arguments */
if (disable_indexing) {
- tracker_config_set_enable_indexing (tracker->config, FALSE);
+ tracker_config_set_enable_indexing (config, FALSE);
}
- if (language) {
- tracker_config_set_language (tracker->config, language);
+ if (language_code) {
+ tracker_config_set_language (config, language_code);
}
initialize_directories ();
/* Initialize other subsystems */
- tracker_log_init (log_filename, tracker_config_get_verbosity (tracker->config));
+ tracker_log_init (log_filename, tracker_config_get_verbosity (config));
g_print ("Starting log:\n File:'%s'\n", log_filename);
- sanity_check_option_values (tracker->config);
+ sanity_check_option_values (config);
- tracker_nfs_lock_init (tracker_config_get_nfs_locking (tracker->config));
+ tracker_nfs_lock_init (tracker_config_get_nfs_locking (config));
- if (!tracker_dbus_init (tracker->config)) {
+ if (!tracker_dbus_init (config)) {
return EXIT_FAILURE;
}
- if (!tracker_monitor_init (tracker->config)) {
+ if (!tracker_monitor_init (config)) {
return EXIT_FAILURE;
}
flags = TRACKER_DB_MANAGER_REMOVE_CACHE;
- if (reindex) {
+ if (force_reindex) {
flags |= TRACKER_DB_MANAGER_FORCE_REINDEX;
}
- if (tracker_config_get_low_memory_mode (tracker->config)) {
+ if (tracker_config_get_low_memory_mode (config)) {
flags |= TRACKER_DB_MANAGER_LOW_MEMORY_MODE;
}
- tracker_db_manager_init (flags, &tracker->first_time_index);
+ tracker_db_manager_init (flags, &is_first_time_index);
/*
* Check instances running
*/
- runtime_level = check_runtime_level (tracker->config,
- tracker->hal,
- tracker->first_time_index);
+ runtime_level = check_runtime_level (config, hal);
switch (runtime_level) {
case TRACKER_RUNNING_NON_ALLOWED:
return EXIT_FAILURE;
case TRACKER_RUNNING_READ_ONLY:
- tracker->readonly = TRUE;
+ is_readonly = TRUE;
break;
case TRACKER_RUNNING_MAIN_INSTANCE:
- tracker->readonly = FALSE;
+ is_readonly = FALSE;
break;
}
- tracker_db_init ();
- tracker_xesam_manager_init ();
- tracker_module_config_init ();
-
- processor = tracker_processor_new (tracker->config,
- tracker->hal);
-
- umask (077);
-
if (!initialize_databases ()) {
return EXIT_FAILURE;
}
- if (!initialize_indexers (tracker->config)) {
+ if (!initialize_indexers (config)) {
return EXIT_FAILURE;
}
+ file_index = tracker_indexer_new (TRACKER_INDEXER_TYPE_FILES, config);
+ file_update_index = tracker_indexer_new (TRACKER_INDEXER_TYPE_FILES_UPDATE, config);
+ email_index = tracker_indexer_new (TRACKER_INDEXER_TYPE_EMAILS, config);
+
+ if (!TRACKER_IS_INDEXER (file_index) ||
+ !TRACKER_IS_INDEXER (file_update_index) ||
+ !TRACKER_IS_INDEXER (email_index)) {
+ g_critical ("Could not create indexer for all indexes (files, files-update, emails)");
+ return EXIT_FAILURE;
+ }
+
+ tracker_db_init (config, language, file_index);
+ tracker_xesam_manager_init ();
+ tracker_module_config_init ();
+
+ processor = tracker_processor_new (config, hal);
+
/* Set our status as running, if this is FALSE, threads stop
* doing what they do and shutdown.
*/
- tracker->is_running = TRUE;
+ is_running = TRUE;
/* Make Tracker available for introspection */
- if (!tracker_dbus_register_objects (tracker)) {
+ if (!tracker_dbus_register_objects (config,
+ language,
+ file_index,
+ email_index,
+ processor)) {
return EXIT_FAILURE;
}
g_message ("Waiting for DBus requests...");
- if (!tracker->readonly) {
+ if (!is_readonly) {
gint seconds;
- seconds = tracker_config_get_initial_sleep (tracker->config);
+ seconds = tracker_config_get_initial_sleep (config);
if (seconds > 0) {
g_message ("Waiting %d seconds before starting",
@@ -863,13 +793,13 @@
start_cb,
processor);
} else {
- g_idle_add (start_cb, tracker);
+ g_idle_add (start_cb, processor);
}
} else {
g_message ("Running in read-only mode, not starting crawler/indexing");
}
- if (tracker->is_running) {
+ if (is_running) {
main_loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (main_loop);
}
@@ -884,9 +814,7 @@
/* Set kill timeout */
g_timeout_add_full (G_PRIORITY_LOW, 5000, shutdown_timeout_cb, NULL, NULL);
- if (processor) {
- g_object_unref (processor);
- }
+ g_object_unref (processor);
shutdown_indexer ();
shutdown_databases ();
@@ -902,19 +830,17 @@
tracker_nfs_lock_shutdown ();
tracker_log_shutdown ();
+ /* Clean up object references */
+ g_object_unref (email_index);
+ g_object_unref (file_update_index);
+ g_object_unref (file_index);
+
#ifdef HAVE_HAL
- if (tracker->hal) {
- g_object_unref (tracker->hal);
- }
+ g_object_unref (hal);
#endif /* HAVE_HAL */
- if (tracker->language) {
- g_object_unref (tracker->language);
- }
-
- if (tracker->config) {
- g_object_unref (tracker->config);
- }
+ g_object_unref (language);
+ g_object_unref (config);
shutdown_locations ();
@@ -924,7 +850,7 @@
void
tracker_shutdown (void)
{
- tracker->is_running = FALSE;
+ is_running = FALSE;
/* Stop any tight loop operations */
/* tracker_processor_stop ();*/
@@ -943,3 +869,75 @@
{
return sys_tmp_dir;
}
+
+gboolean
+tracker_get_is_readonly (void)
+{
+ return is_readonly;
+}
+
+void
+tracker_set_is_readonly (gboolean value)
+{
+ gboolean emit;
+
+ emit = is_readonly != value;
+
+ if (!emit) {
+ return;
+ }
+
+ /* Set value */
+ is_readonly = value;
+
+ /* Signal the status change */
+ tracker_status_signal ();
+}
+
+gboolean
+tracker_get_is_first_time_index (void)
+{
+ return is_first_time_index;
+}
+
+gboolean
+tracker_get_in_merge (void)
+{
+ return in_merge;
+}
+
+gboolean
+tracker_get_is_paused_manually (void)
+{
+ return is_paused_manually;
+}
+
+void
+tracker_set_is_paused_manually (gboolean value)
+{
+ gboolean emit;
+
+ emit = is_paused_manually != value;
+
+ if (!emit) {
+ 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;
+
+ /* Signal the status change */
+ tracker_status_signal ();
+}
+
+void
+tracker_set_reindex_on_shutdown (gboolean value)
+{
+ reindex_on_shutdown = value;
+}
Modified: branches/indexer-split/src/trackerd/tracker-main.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-main.h (original)
+++ branches/indexer-split/src/trackerd/tracker-main.h Mon Jul 14 13:28:16 2008
@@ -25,65 +25,24 @@
#include "config.h"
-#include <time.h>
-
-#include <glib.h>
-
-#include <libtracker-common/tracker-config.h>
-#include <libtracker-common/tracker-language.h>
-#include <libtracker-common/tracker-parser.h>
-#include <libtracker-common/tracker-hal.h>
-
-#include <libtracker-db/tracker-db-action.h>
+G_BEGIN_DECLS
-#include "tracker-crawler.h"
-#include "tracker-indexer.h"
+void tracker_shutdown (void);
-G_BEGIN_DECLS
+const gchar *tracker_get_data_dir (void);
+const gchar *tracker_get_sys_tmp_dir (void);
-typedef struct {
- TrackerConfig *config;
- TrackerLanguage *language;
- TrackerHal *hal;
-
- TrackerIndexer *file_index;
- TrackerIndexer *file_update_index;
- TrackerIndexer *email_index;
-
- gboolean is_running;
- gboolean readonly;
-
- gint pid;
-
- gboolean reindex;
-
- /* Pause/shutdown */
- gboolean pause_manual;
- gboolean pause_battery;
- gboolean pause_io;
-
- /* Indexing options */
-
- /* Table of stop words that are to be ignored by the parser */
- gboolean first_time_index;
-
- gint folders_count;
- gint folders_processed;
- gint mbox_count;
- gint mbox_processed;
-
- /* Progress info for merges */
- gboolean in_merge;
-
- /* Application run time values */
- gint index_count;
-} Tracker;
+gboolean tracker_get_is_readonly (void);
+void tracker_set_is_readonly (gboolean value);
-void tracker_shutdown (void);
+gboolean tracker_get_is_first_time_index (void);
+gboolean tracker_get_in_merge (void);
-const gchar *tracker_get_data_dir (void);
-const gchar *tracker_get_sys_tmp_dir (void);
+gboolean tracker_get_is_paused_manually (void);
+void tracker_set_is_paused_manually (gboolean value);
+void tracker_set_reindex_on_shutdown (gboolean value);
+
G_END_DECLS
#endif /* __TRACKERD_MAIN_H__ */
Modified: branches/indexer-split/src/trackerd/tracker-processor.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-processor.c (original)
+++ branches/indexer-split/src/trackerd/tracker-processor.c Mon Jul 14 13:28:16 2008
@@ -31,6 +31,7 @@
#include "tracker-processor.h"
#include "tracker-crawler.h"
#include "tracker-monitor.h"
+#include "tracker-status.h"
#define TRACKER_PROCESSOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_PROCESSOR, TrackerProcessorPrivate))
@@ -63,6 +64,8 @@
static void tracker_processor_finalize (GObject *object);
static void process_next_module (TrackerProcessor *processor);
+static void crawler_all_sent_cb (TrackerCrawler *crawler,
+ gpointer user_data);
static void crawler_finished_cb (TrackerCrawler *crawler,
guint directories_found,
guint directories_ignored,
@@ -89,7 +92,7 @@
object_class->finalize = tracker_processor_finalize;
- signals [FINISHED] =
+ signals[FINISHED] =
g_signal_new ("finished",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
@@ -125,6 +128,9 @@
g_list_free (priv->modules);
g_signal_handlers_disconnect_by_func (priv->crawler,
+ G_CALLBACK (crawler_all_sent_cb),
+ object);
+ g_signal_handlers_disconnect_by_func (priv->crawler,
G_CALLBACK (crawler_finished_cb),
object);
g_object_unref (priv->crawler);
@@ -219,11 +225,12 @@
return;
}
- /* Set up monitors */
-
- /* Set up recursive monitors */
+ /* Set up monitors && recursive monitors */
+ tracker_status_set_and_signal (TRACKER_STATUS_WATCHING);
/* Gets all files and directories */
+ tracker_status_set_and_signal (TRACKER_STATUS_PENDING);
+
if (!tracker_crawler_start (priv->crawler, module_name)) {
/* If there is nothing to crawl, we are done, process
* the next module.
@@ -251,6 +258,7 @@
if (!priv->current_module) {
priv->finished = TRUE;
tracker_processor_stop (processor);
+
return;
}
@@ -258,6 +266,17 @@
}
static void
+crawler_all_sent_cb (TrackerCrawler *crawler,
+ gpointer user_data)
+{
+ /* Do we even need this step Optimizing ? */
+ tracker_status_set_and_signal (TRACKER_STATUS_OPTIMIZING);
+
+ /* All done */
+ tracker_status_set_and_signal (TRACKER_STATUS_IDLE);
+}
+
+static void
crawler_finished_cb (TrackerCrawler *crawler,
guint directories_found,
guint directories_ignored,
@@ -318,6 +337,8 @@
g_return_val_if_fail (TRACKER_IS_HAL (hal), NULL);
#endif /* HAVE_HAL */
+ tracker_status_set_and_signal (TRACKER_STATUS_INITIALIZING);
+
processor = g_object_new (TRACKER_TYPE_PROCESSOR, NULL);
priv = TRACKER_PROCESSOR_GET_PRIVATE (processor);
@@ -337,6 +358,9 @@
priv->crawler = tracker_crawler_new (config, hal);
+ g_signal_connect (priv->crawler, "all-sent",
+ G_CALLBACK (crawler_all_sent_cb),
+ processor);
g_signal_connect (priv->crawler, "finished",
G_CALLBACK (crawler_finished_cb),
processor);
@@ -396,5 +420,91 @@
g_message ("Total monitors : %d\n",
tracker_monitor_get_count ());
+ /* Here we set to IDLE when we were stopped, otherwise, we
+ * we are currently in the process of sending files to the
+ * indexer and we set the state to INDEXING
+ */
+ if (!priv->finished) {
+ /* Do we even need this step Optimizing ? */
+ tracker_status_set_and_signal (TRACKER_STATUS_OPTIMIZING);
+
+ /* All done */
+ tracker_status_set_and_signal (TRACKER_STATUS_IDLE);
+ } else {
+ tracker_status_set_and_signal (TRACKER_STATUS_INDEXING);
+ }
+
g_signal_emit (processor, signals[FINISHED], 0);
}
+
+guint
+tracker_processor_get_directories_found (TrackerProcessor *processor)
+{
+ TrackerProcessorPrivate *priv;
+
+ g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), 0);
+
+ priv = TRACKER_PROCESSOR_GET_PRIVATE (processor);
+
+ return priv->directories_found;
+}
+
+guint
+tracker_processor_get_directories_ignored (TrackerProcessor *processor)
+{
+ TrackerProcessorPrivate *priv;
+
+ g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), 0);
+
+ priv = TRACKER_PROCESSOR_GET_PRIVATE (processor);
+
+ return priv->directories_ignored;
+}
+
+guint
+tracker_processor_get_directories_total (TrackerProcessor *processor)
+{
+ TrackerProcessorPrivate *priv;
+
+ g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), 0);
+
+ priv = TRACKER_PROCESSOR_GET_PRIVATE (processor);
+
+ return priv->directories_found + priv->directories_ignored;
+}
+
+guint
+tracker_processor_get_files_found (TrackerProcessor *processor)
+{
+ TrackerProcessorPrivate *priv;
+
+ g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), 0);
+
+ priv = TRACKER_PROCESSOR_GET_PRIVATE (processor);
+
+ return priv->files_found;
+}
+
+guint
+tracker_processor_get_files_ignored (TrackerProcessor *processor)
+{
+ TrackerProcessorPrivate *priv;
+
+ g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), 0);
+
+ priv = TRACKER_PROCESSOR_GET_PRIVATE (processor);
+
+ return priv->files_ignored;
+}
+
+guint
+tracker_processor_get_files_total (TrackerProcessor *processor)
+{
+ TrackerProcessorPrivate *priv;
+
+ g_return_val_if_fail (TRACKER_IS_PROCESSOR (processor), 0);
+
+ priv = TRACKER_PROCESSOR_GET_PRIVATE (processor);
+
+ return priv->files_found + priv->files_ignored;
+}
Modified: branches/indexer-split/src/trackerd/tracker-processor.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-processor.h (original)
+++ branches/indexer-split/src/trackerd/tracker-processor.h Mon Jul 14 13:28:16 2008
@@ -24,6 +24,7 @@
#include <glib-object.h>
#include <libtracker-common/tracker-config.h>
+#include <libtracker-common/tracker-hal.h>
G_BEGIN_DECLS
@@ -47,11 +48,20 @@
void (*finished) (TrackerProcessor *processor);
};
-GType tracker_processor_get_type (void) G_GNUC_CONST;
-TrackerProcessor *tracker_processor_new (TrackerConfig *config,
- TrackerHal *hal);
-void tracker_processor_start (TrackerProcessor *processor);
-void tracker_processor_stop (TrackerProcessor *processor);
+GType tracker_processor_get_type (void) G_GNUC_CONST;
+
+TrackerProcessor *tracker_processor_new (TrackerConfig *config,
+ TrackerHal *hal);
+void tracker_processor_start (TrackerProcessor *processor);
+void tracker_processor_stop (TrackerProcessor *processor);
+
+guint tracker_processor_get_directories_found (TrackerProcessor *processor);
+guint tracker_processor_get_directories_ignored (TrackerProcessor *processor);
+guint tracker_processor_get_directories_total (TrackerProcessor *processor);
+
+guint tracker_processor_get_files_found (TrackerProcessor *processor);
+guint tracker_processor_get_files_ignored (TrackerProcessor *processor);
+guint tracker_processor_get_files_total (TrackerProcessor *processor);
G_END_DECLS
Modified: branches/indexer-split/src/trackerd/tracker-search.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-search.c (original)
+++ branches/indexer-split/src/trackerd/tracker-search.c Mon Jul 14 13:28:16 2008
@@ -48,25 +48,14 @@
typedef struct {
DBusGProxy *fd_proxy;
+
TrackerConfig *config;
TrackerLanguage *language;
TrackerIndexer *file_index;
TrackerIndexer *email_index;
} TrackerSearchPriv;
-enum {
- PROP_0,
- PROP_CONFIG,
- PROP_LANGUAGE,
- PROP_FILE_INDEX,
- PROP_EMAIL_INDEX
-};
-
-static void search_finalize (GObject *object);
-static void search_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec);
+static void search_finalize (GObject *object);
G_DEFINE_TYPE(TrackerSearch, tracker_search, G_TYPE_OBJECT)
@@ -78,34 +67,6 @@
object_class = G_OBJECT_CLASS (klass);
object_class->finalize = search_finalize;
- object_class->set_property = search_set_property;
-
- g_object_class_install_property (object_class,
- PROP_CONFIG,
- g_param_spec_object ("config",
- "Config",
- "TrackerConfig object",
- tracker_config_get_type (),
- G_PARAM_WRITABLE));
- g_object_class_install_property (object_class,
- PROP_LANGUAGE,
- g_param_spec_object ("language",
- "Language",
- "Language",
- tracker_language_get_type (),
- G_PARAM_WRITABLE));
- g_object_class_install_property (object_class,
- PROP_FILE_INDEX,
- g_param_spec_pointer ("file-index",
- "File index",
- "File index",
- G_PARAM_WRITABLE));
- g_object_class_install_property (object_class,
- PROP_EMAIL_INDEX,
- g_param_spec_pointer ("email-index",
- "Email index",
- "Email index",
- G_PARAM_WRITABLE));
g_type_class_add_private (object_class, sizeof (TrackerSearchPriv));
}
@@ -126,126 +87,38 @@
g_object_unref (priv->fd_proxy);
}
- G_OBJECT_CLASS (tracker_search_parent_class)->finalize (object);
-}
-
-static void
-search_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TrackerSearchPriv *priv;
-
- priv = GET_PRIV (object);
+ g_object_unref (priv->email_index);
+ g_object_unref (priv->file_index);
+ g_object_unref (priv->language);
+ g_object_unref (priv->config);
- switch (param_id) {
- case PROP_CONFIG:
- tracker_search_set_config (TRACKER_SEARCH (object),
- g_value_get_object (value));
- break;
- case PROP_LANGUAGE:
- tracker_search_set_language (TRACKER_SEARCH (object),
- g_value_get_object (value));
- break;
- case PROP_FILE_INDEX:
- tracker_search_set_file_index (TRACKER_SEARCH (object),
- g_value_get_pointer (value));
- break;
- case PROP_EMAIL_INDEX:
- tracker_search_set_email_index (TRACKER_SEARCH (object),
- g_value_get_pointer (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
+ G_OBJECT_CLASS (tracker_search_parent_class)->finalize (object);
}
TrackerSearch *
-tracker_search_new (void)
-{
- return g_object_new (TRACKER_TYPE_SEARCH, NULL);
-}
-
-void
-tracker_search_set_config (TrackerSearch *object,
- TrackerConfig *config)
+tracker_search_new (TrackerConfig *config,
+ TrackerLanguage *language,
+ TrackerIndexer *file_index,
+ TrackerIndexer *email_index)
{
+ TrackerSearch *object;
TrackerSearchPriv *priv;
- g_return_if_fail (TRACKER_IS_SEARCH (object));
- g_return_if_fail (TRACKER_IS_CONFIG (config));
-
- priv = GET_PRIV (object);
-
- if (config) {
- g_object_ref (config);
- }
-
- if (priv->config) {
- g_object_unref (priv->config);
- }
-
- priv->config = config;
-
- g_object_notify (G_OBJECT (object), "config");
-}
-
-void
-tracker_search_set_language (TrackerSearch *object,
- TrackerLanguage *language)
-{
- TrackerSearchPriv *priv;
-
- g_return_if_fail (TRACKER_IS_SEARCH (object));
- g_return_if_fail (language != NULL);
-
- priv = GET_PRIV (object);
-
- if (language) {
- g_object_ref (language);
- }
-
- if (priv->language) {
- g_object_unref (priv->language);
- }
-
- priv->language = language;
-
- g_object_notify (G_OBJECT (object), "language");
-}
-
-void
-tracker_search_set_file_index (TrackerSearch *object,
- TrackerIndexer *file_index)
-{
- TrackerSearchPriv *priv;
+ g_return_val_if_fail (TRACKER_IS_CONFIG (config), NULL);
+ g_return_val_if_fail (TRACKER_IS_LANGUAGE (language), NULL);
+ g_return_val_if_fail (TRACKER_IS_INDEXER (file_index), NULL);
+ g_return_val_if_fail (TRACKER_IS_INDEXER (email_index), NULL);
- g_return_if_fail (TRACKER_IS_SEARCH (object));
- g_return_if_fail (file_index != NULL);
+ object = g_object_new (TRACKER_TYPE_SEARCH, NULL);
priv = GET_PRIV (object);
- priv->file_index = file_index;
-
- g_object_notify (G_OBJECT (object), "file-index");
-}
-
-void
-tracker_search_set_email_index (TrackerSearch *object,
- TrackerIndexer *email_index)
-{
- TrackerSearchPriv *priv;
-
- g_return_if_fail (TRACKER_IS_SEARCH (object));
- g_return_if_fail (email_index != NULL);
-
- priv = GET_PRIV (object);
+ priv->config = g_object_ref (config);
+ priv->language = g_object_ref (language);
+ priv->file_index = g_object_ref (file_index);
+ priv->email_index = g_object_ref (email_index);
- priv->email_index = email_index;
-
- g_object_notify (G_OBJECT (object), "email-index");
+ return object;
}
/*
@@ -600,6 +473,8 @@
return FALSE;
}
+ priv = GET_PRIV (object);
+
services[count++] = tracker_ontology_get_id_for_service_type (service);
if (strcmp (service, "Files") == 0) {
@@ -656,8 +531,6 @@
tracker_dbus_return_val_if_fail (search_text != NULL, FALSE, error);
tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
- priv = GET_PRIV (object);
-
tracker_dbus_request_new (request_id,
"DBus request to get search hit count for all, "
"search text:'%s'",
@@ -670,6 +543,8 @@
return FALSE;
}
+ priv = GET_PRIV (object);
+
tree = tracker_query_tree_new (search_text,
priv->file_index,
priv->config,
@@ -893,7 +768,6 @@
gchar **values,
GError **error)
{
- TrackerSearchPriv *priv;
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
guint request_id;
@@ -907,8 +781,6 @@
tracker_dbus_return_val_if_fail (search_text != NULL, FALSE, error);
tracker_dbus_return_val_if_fail (values != NULL, FALSE, error);
- priv = GET_PRIV (object);
-
tracker_dbus_request_new (request_id,
"DBus request to get snippet, "
"service:'%s', search text:'%s', id:'%s'",
@@ -951,8 +823,11 @@
g_free (service_id);
if (result_set) {
- gchar **strv;
- gchar *text;
+ TrackerSearchPriv *priv;
+ gchar **strv;
+ gchar *text;
+
+ priv = GET_PRIV (object);
tracker_db_result_set_get (result_set, 0, &text, -1);
strv = tracker_parser_text_into_array (text,
@@ -1301,15 +1176,15 @@
tracker_dbus_return_val_if_fail (search_text != NULL, FALSE, error);
tracker_dbus_return_val_if_fail (value != NULL, FALSE, error);
-
- priv = GET_PRIV (object);
-
+
tracker_dbus_request_new (request_id,
"DBus request to for suggested words, "
"term:'%s', max dist:%d",
search_text,
max_dist);
+ priv = GET_PRIV (object);
+
*value = tracker_indexer_get_suggestion (priv->file_index, search_text, max_dist);
if (!(*value)) {
Modified: branches/indexer-split/src/trackerd/tracker-search.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-search.h (original)
+++ branches/indexer-split/src/trackerd/tracker-search.h Mon Jul 14 13:28:16 2008
@@ -53,15 +53,10 @@
};
GType tracker_search_get_type (void);
-TrackerSearch *tracker_search_new (void);
-void tracker_search_set_config (TrackerSearch *object,
- TrackerConfig *config);
-void tracker_search_set_language (TrackerSearch *object,
- TrackerLanguage *language);
-void tracker_search_set_file_index (TrackerSearch *object,
- TrackerIndexer *file_index);
-void tracker_search_set_email_index (TrackerSearch *object,
- TrackerIndexer *email_index);
+TrackerSearch *tracker_search_new (TrackerConfig *config,
+ TrackerLanguage *language,
+ TrackerIndexer *file_index,
+ TrackerIndexer *email_index);
gboolean tracker_search_get_hit_count (TrackerSearch *object,
const gchar *service,
const gchar *search_text,
Modified: branches/indexer-split/src/trackerd/tracker-status.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-status.c (original)
+++ branches/indexer-split/src/trackerd/tracker-status.c Mon Jul 14 13:28:16 2008
@@ -24,6 +24,7 @@
#include "tracker-status.h"
#include "tracker-dbus.h"
#include "tracker-daemon.h"
+#include "tracker-main.h"
static TrackerStatus status = TRACKER_STATUS_INITIALIZING;
@@ -113,35 +114,53 @@
}
void
-tracker_status_set_and_signal (TrackerStatus new_status,
- gboolean first_time_index,
- gboolean in_merge,
- gboolean pause_manual,
- gboolean pause_on_battery,
- gboolean pause_io,
- gboolean enable_indexing)
+tracker_status_signal (void)
{
- GObject *object;
- gboolean emit;
+ GObject *object;
+
+ object = tracker_dbus_get_object (TRACKER_TYPE_DAEMON);
+
+ /* Pause IO is basically here to know when we are crawling
+ * instead of indexing the file system. The point being that
+ * we tell the indexer to pause while we crawl new files
+ * created. This is redundant now since we don't do both in
+ * the daemon. Should this be added back?
+ */
+
+ /* Pause on battery is a config option, not sure how to get
+ * that from here or the point of passing it in the state
+ * change either. This signal is going to change because we
+ * shouldn't send all this crap just for a simple state
+ * change. This is passed as FALSE for now.
+ */
+
+ g_signal_emit_by_name (object,
+ "index-state-change",
+ tracker_status_to_string (status),
+ tracker_get_is_first_time_index (),
+ tracker_get_in_merge (),
+ tracker_get_is_paused_manually (),
+ FALSE, /* Pause on battery */
+ FALSE, /* Pause IO */
+ !tracker_get_is_readonly ());
+}
+
+void
+tracker_status_set_and_signal (TrackerStatus new_status)
+{
+ gboolean emit;
emit = new_status != status;
- tracker_status_set (new_status);
-
if (!emit) {
return;
}
- object = tracker_dbus_get_object (TRACKER_TYPE_DAEMON);
+ g_message ("State change from '%s' --> '%s'",
+ tracker_status_to_string (status),
+ tracker_status_to_string (new_status));
- g_signal_emit_by_name (object,
- "index-state-change",
- tracker_status_to_string (status),
- first_time_index,
- in_merge,
- pause_manual,
- pause_on_battery,
- pause_io,
- enable_indexing);
+ tracker_status_set (new_status);
+ tracker_status_signal ();
}
Modified: branches/indexer-split/src/trackerd/tracker-status.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-status.h (original)
+++ branches/indexer-split/src/trackerd/tracker-status.h Mon Jul 14 13:28:16 2008
@@ -44,13 +44,8 @@
TrackerStatus tracker_status_get (void);
const gchar * tracker_status_get_as_string (void);
void tracker_status_set (TrackerStatus new_status);
-void tracker_status_set_and_signal (TrackerStatus new_status,
- gboolean first_time_index,
- gboolean in_merge,
- gboolean pause_manual,
- gboolean pause_on_battery,
- gboolean pause_io,
- gboolean enable_indexing);
+void tracker_status_set_and_signal (TrackerStatus new_status);
+void tracker_status_signal (void);
G_END_DECLS
Modified: branches/indexer-split/src/trackerd/tracker-utils.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-utils.c (original)
+++ branches/indexer-split/src/trackerd/tracker-utils.c Mon Jul 14 13:28:16 2008
@@ -30,8 +30,6 @@
#include "tracker-main.h"
#include "tracker-xesam-manager.h"
-extern Tracker *tracker;
-
gchar *
tracker_get_radix_by_suffix (const gchar *str,
const gchar *suffix)
@@ -47,24 +45,6 @@
}
void
-tracker_throttle (gint multiplier)
-{
- gint throttle;
-
- throttle = tracker_config_get_throttle (tracker->config);
-
- if (throttle < 1) {
- return;
- }
-
- throttle *= multiplier;
-
- if (throttle > 0) {
- g_usleep (throttle);
- }
-}
-
-void
tracker_add_metadata_to_table (GHashTable *meta_table,
const gchar *key,
const gchar *value)
@@ -76,61 +56,3 @@
g_hash_table_steal (meta_table, key);
g_hash_table_insert (meta_table, (gchar*) key, list);
}
-
-gboolean
-tracker_is_low_diskspace (void)
-{
- struct statvfs st;
- const gchar *data_dir;
- gint low_disk_space_limit;
-
- low_disk_space_limit = tracker_config_get_low_disk_space_limit (tracker->config);
-
- if (low_disk_space_limit < 1) {
- return FALSE;
- }
-
- data_dir = tracker_get_data_dir ();
-
- if (statvfs (data_dir, &st) == -1) {
- static gboolean reported = 0;
-
- if (!reported) {
- reported = 1;
- g_critical ("Could not statvfs %s", data_dir);
- }
-
- return FALSE;
- }
-
- if (((long long) st.f_bavail * 100 / st.f_blocks) <= low_disk_space_limit) {
- g_critical ("Disk space is low!");
- return TRUE;
- }
-
- return FALSE;
-}
-
-gboolean
-tracker_should_pause (void)
-{
- return tracker->pause_manual ||
- tracker_should_pause_on_battery () ||
- tracker_is_low_diskspace () ||
- tracker_indexer_are_databases_too_big ();
-}
-
-gboolean
-tracker_should_pause_on_battery (void)
-{
- if (!tracker->pause_battery) {
- return FALSE;
- }
-
- if (tracker->first_time_index) {
- return tracker_config_get_disable_indexing_on_battery_init (tracker->config);
- }
-
- return tracker_config_get_disable_indexing_on_battery (tracker->config);
-}
-
Modified: branches/indexer-split/src/trackerd/tracker-utils.h
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-utils.h (original)
+++ branches/indexer-split/src/trackerd/tracker-utils.h Mon Jul 14 13:28:16 2008
@@ -29,15 +29,11 @@
gchar * tracker_get_radix_by_suffix (const gchar *str,
const gchar *suffix);
-void tracker_throttle (gint multiplier);
void tracker_notify_file_data_available (void);
void tracker_add_metadata_to_table (GHashTable *meta_table,
const char *key,
const char *value);
void tracker_add_io_grace (const char *uri);
-gboolean tracker_is_diskspace_low (void);
-gboolean tracker_should_pause (void);
-gboolean tracker_should_pause_on_battery (void);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]