tracker r2772 - in trunk: . src/tracker-indexer src/tracker-indexer/modules



Author: carlosg
Date: Thu Jan  8 11:30:49 2009
New Revision: 2772
URL: http://svn.gnome.org/viewvc/tracker?rev=2772&view=rev

Log:
2009-01-08  Carlos Garnacho  <carlos imendio com>

        * src/tracker-indexer/tracker-module-file.[ch]: Add get_flags()
        method. TrackerModuleFlags at the moment contains
        TRACKER_FILE_CONTENTS_STATIC, used for contents that are not prone to
        change.
        * src/tracker-indexer/tracker-indexer.c: Do not try to update static
        items in the database, since all the metadata comparison is going to
        be expensive and useless if the data isn't changing.
        * src/tracker-indexer/modules/evolution-pop.c:
        * src/tracker-indexer/modules/evolution-imap.c:
        * src/tracker-indexer/modules/evolution-imap-db.c: Implement
        get_flags().

Modified:
   trunk/ChangeLog
   trunk/src/tracker-indexer/modules/evolution-imap-db.c
   trunk/src/tracker-indexer/modules/evolution-imap.c
   trunk/src/tracker-indexer/modules/evolution-pop.c
   trunk/src/tracker-indexer/tracker-indexer.c
   trunk/src/tracker-indexer/tracker-module-file.c
   trunk/src/tracker-indexer/tracker-module-file.h

Modified: trunk/src/tracker-indexer/modules/evolution-imap-db.c
==============================================================================
--- trunk/src/tracker-indexer/modules/evolution-imap-db.c	(original)
+++ trunk/src/tracker-indexer/modules/evolution-imap-db.c	Thu Jan  8 11:30:49 2009
@@ -75,6 +75,8 @@
 static gchar *       tracker_evolution_imap_db_file_get_text         (TrackerModuleFile *file);
 static TrackerModuleMetadata *
                      tracker_evolution_imap_db_file_get_metadata     (TrackerModuleFile *file);
+static TrackerModuleFlags
+                     tracker_evolution_imap_db_file_get_flags        (TrackerModuleFile *file);
 
 static void          tracker_evolution_imap_db_file_iteratable_init  (TrackerModuleIteratableIface *iface);
 static gboolean      tracker_evolution_imap_db_file_iter_contents    (TrackerModuleIteratable *iteratable);
@@ -99,6 +101,7 @@
         file_class->get_uri = tracker_evolution_imap_db_file_get_uri;
         file_class->get_text = tracker_evolution_imap_db_file_get_text;
         file_class->get_metadata = tracker_evolution_imap_db_file_get_metadata;
+	file_class->get_flags = tracker_evolution_imap_db_file_get_flags;
 }
 
 static void
@@ -840,6 +843,12 @@
         }
 }
 
+static TrackerModuleFlags
+tracker_evolution_imap_db_file_get_flags (TrackerModuleFile *file)
+{
+	return TRACKER_FILE_CONTENTS_STATIC;
+}
+
 static GList *
 extract_mime_parts (TrackerEvolutionImapDbFile *self)
 {

Modified: trunk/src/tracker-indexer/modules/evolution-imap.c
==============================================================================
--- trunk/src/tracker-indexer/modules/evolution-imap.c	(original)
+++ trunk/src/tracker-indexer/modules/evolution-imap.c	Thu Jan  8 11:30:49 2009
@@ -75,6 +75,8 @@
 static gchar *       tracker_evolution_imap_file_get_text         (TrackerModuleFile *file);
 static TrackerModuleMetadata *
                      tracker_evolution_imap_file_get_metadata     (TrackerModuleFile *file);
+static TrackerModuleFlags
+                     tracker_evolution_imap_file_get_flags        (TrackerModuleFile *file);
 
 static void          tracker_evolution_imap_file_iteratable_init  (TrackerModuleIteratableIface *iface);
 static gboolean      tracker_evolution_imap_file_iter_contents    (TrackerModuleIteratable *iteratable);
@@ -99,6 +101,7 @@
         file_class->get_uri = tracker_evolution_imap_file_get_uri;
         file_class->get_text = tracker_evolution_imap_file_get_text;
         file_class->get_metadata = tracker_evolution_imap_file_get_metadata;
+	file_class->get_flags = tracker_evolution_imap_file_get_flags;
 }
 
 static void
@@ -1072,6 +1075,12 @@
         }
 }
 
+static TrackerModuleFlags
+tracker_evolution_imap_file_get_flags (TrackerModuleFile *file)
+{
+	return TRACKER_FILE_CONTENTS_STATIC;
+}
+
 static GList *
 extract_mime_parts (TrackerEvolutionImapFile *self)
 {

Modified: trunk/src/tracker-indexer/modules/evolution-pop.c
==============================================================================
--- trunk/src/tracker-indexer/modules/evolution-pop.c	(original)
+++ trunk/src/tracker-indexer/modules/evolution-pop.c	Thu Jan  8 11:30:49 2009
@@ -50,6 +50,8 @@
 static gchar *       tracker_evolution_pop_file_get_text         (TrackerModuleFile *file);
 static TrackerModuleMetadata *
                      tracker_evolution_pop_file_get_metadata     (TrackerModuleFile *file);
+static TrackerModuleFlags
+                     tracker_evolution_pop_file_get_flags        (TrackerModuleFile *file);
 
 static void          tracker_evolution_pop_file_iteratable_init  (TrackerModuleIteratableIface *iface);
 static gboolean      tracker_evolution_pop_file_iter_contents    (TrackerModuleIteratable *iteratable);
@@ -73,6 +75,7 @@
         file_class->get_uri = tracker_evolution_pop_file_get_uri;
         file_class->get_text = tracker_evolution_pop_file_get_text;
         file_class->get_metadata = tracker_evolution_pop_file_get_metadata;
+	file_class->get_flags = tracker_evolution_pop_file_get_flags;
 }
 
 static void
@@ -412,6 +415,12 @@
         return metadata;
 }
 
+static TrackerModuleFlags
+tracker_evolution_pop_file_get_flags (TrackerModuleFile *file)
+{
+	return TRACKER_FILE_CONTENTS_STATIC;
+}
+
 static void
 extract_mime_parts (GMimeObject *object,
                     gpointer     user_data)

Modified: trunk/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-indexer.c	(original)
+++ trunk/src/tracker-indexer/tracker-indexer.c	Thu Jan  8 11:30:49 2009
@@ -1412,6 +1412,14 @@
 		gchar *old_text;
 		gchar *new_text;
 
+		if (tracker_module_file_get_flags (info->module_file) & TRACKER_FILE_CONTENTS_STATIC) {
+			/* According to the module, the metadata can't change for this item */
+			g_debug ("Not updating static item '%s/%s'",
+				 dirname,
+				 basename);
+			return;
+		}
+
 		/* Update case */
 		g_debug ("Updating item '%s/%s'", 
 			 dirname, 

Modified: trunk/src/tracker-indexer/tracker-module-file.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-module-file.c	(original)
+++ trunk/src/tracker-indexer/tracker-module-file.c	Thu Jan  8 11:30:49 2009
@@ -53,6 +53,23 @@
 
 G_DEFINE_ABSTRACT_TYPE (TrackerModuleFile, tracker_module_file, G_TYPE_OBJECT)
 
+GType
+tracker_module_flags_get_type (void)
+{
+        static GType etype = 0;
+
+        if (!etype) {
+                static const GEnumValue values[] = {
+                        { TRACKER_FILE_CONTENTS_STATIC, "TRACKER_FILE_CONTENTS_STATIC", "contents-static" },
+                        { 0, NULL, NULL }
+                };
+
+                etype = g_enum_register_static ("TrackerModuleFlags", values);
+        }
+
+        return etype;
+}
+
 static void
 tracker_module_file_class_init (TrackerModuleFileClass *klass)
 {
@@ -271,3 +288,21 @@
 
         return metadata;
 }
+
+/**
+ * tracker_module_file_get_flags:
+ * @file: A #TrackerModuleFile
+ *
+ * Returns the flags correspoinding to @file in the current state (see #TrackerModuleIteratable)
+ *
+ * Returns: Flags for @file
+ **/
+TrackerModuleFlags
+tracker_module_file_get_flags (TrackerModuleFile *file)
+{
+        if (TRACKER_MODULE_FILE_GET_CLASS (file)->get_flags != NULL) {
+                return TRACKER_MODULE_FILE_GET_CLASS (file)->get_flags (file);
+        }
+
+        return 0;
+}

Modified: trunk/src/tracker-indexer/tracker-module-file.h
==============================================================================
--- trunk/src/tracker-indexer/tracker-module-file.h	(original)
+++ trunk/src/tracker-indexer/tracker-module-file.h	Thu Jan  8 11:30:49 2009
@@ -41,6 +41,11 @@
 
 typedef struct TrackerModuleFile TrackerModuleFile;
 typedef struct TrackerModuleFileClass TrackerModuleFileClass;
+typedef enum TrackerModuleFlags TrackerModuleFlags;
+
+enum TrackerModuleFlags {
+        TRACKER_FILE_CONTENTS_STATIC = 1 << 0
+};
 
 struct TrackerModuleFile {
         GObject parent_instance;
@@ -54,9 +59,10 @@
         gchar * (* get_uri) (TrackerModuleFile *file);
         gchar * (* get_text) (TrackerModuleFile *file);
         TrackerModuleMetadata * (* get_metadata) (TrackerModuleFile *file);
+        TrackerModuleFlags (* get_flags) (TrackerModuleFile *file);
 };
 
-
+GType tracker_module_flags_get_type (void) G_GNUC_CONST;
 GType tracker_module_file_get_type (void) G_GNUC_CONST;
 
 GFile *                 tracker_module_file_get_file         (TrackerModuleFile *file);
@@ -64,6 +70,7 @@
 gchar *                 tracker_module_file_get_uri          (TrackerModuleFile *file);
 gchar *                 tracker_module_file_get_text         (TrackerModuleFile *file);
 TrackerModuleMetadata * tracker_module_file_get_metadata     (TrackerModuleFile *file);
+TrackerModuleFlags      tracker_module_file_get_flags        (TrackerModuleFile *file);
 
 
 G_END_DECLS



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