tracker r1831 - in branches/indexer-split: . src/tracker-indexer src/tracker-indexer/modules



Author: carlosg
Date: Wed Jul  2 16:04:15 2008
New Revision: 1831
URL: http://svn.gnome.org/viewvc/tracker?rev=1831&view=rev

Log:
2008-07-02  Carlos Garnacho  <carlos imendio com>

        * src/tracker-indexer/tracker-module.h: Add tracker_module_init() and
        tracker_module_shutdown() to modules API. This is needed since we now
        don't have an entry point that will be called just once, as happened
        with tracker_module_get_directories().
        * src/tracker-indexer/tracker-indexer-module.[ch]: Updated.
        * src/tracker-indexer/tracker-indexer.c (close_module)
        (tracker_indexer_init): Ensure the initialization/shutdown methods are
        called for the modules.
        * src/tracker-indexer/modules/evolution.c: Use these functions to
        manage persistent data.


Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/tracker-indexer/modules/evolution.c
   branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c
   branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h
   branches/indexer-split/src/tracker-indexer/tracker-indexer.c
   branches/indexer-split/src/tracker-indexer/tracker-module.h

Modified: branches/indexer-split/src/tracker-indexer/modules/evolution.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/modules/evolution.c	(original)
+++ branches/indexer-split/src/tracker-indexer/modules/evolution.c	Wed Jul  2 16:04:15 2008
@@ -88,6 +88,10 @@
 static gchar *imap_dir = NULL;
 static GHashTable *accounts = NULL;
 
+
+void   get_imap_accounts (void);
+
+
 static gboolean
 read_summary (FILE *summary,
               ...)
@@ -190,6 +194,26 @@
         return TRUE;
 }
 
+void
+tracker_module_init (void)
+{
+        g_mime_init (0);
+        get_imap_accounts ();
+
+        local_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "local", G_DIR_SEPARATOR_S, NULL);
+        imap_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "imap", G_DIR_SEPARATOR_S, NULL);
+}
+
+void
+tracker_module_shutdown (void)
+{
+        g_mime_shutdown ();
+
+        g_hash_table_destroy (accounts);
+        g_free (local_dir);
+        g_free (imap_dir);
+}
+
 G_CONST_RETURN gchar *
 tracker_module_get_name (void)
 {
@@ -332,12 +356,6 @@
 {
         gchar **dirs;
 
-        g_mime_init (0);
-        get_imap_accounts ();
-
-        local_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "local", G_DIR_SEPARATOR_S, NULL);
-        imap_dir = g_build_filename (g_get_home_dir (), ".evolution", "mail", "imap", G_DIR_SEPARATOR_S, NULL);
-
         dirs = g_new0 (gchar *, 3);
         dirs[0] = g_strdup (local_dir);
         dirs[1] = g_strdup (imap_dir);

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-module.c	Wed Jul  2 16:04:15 2008
@@ -48,6 +48,26 @@
 	return module;
 }
 
+void
+tracker_indexer_module_init (GModule *module)
+{
+	TrackerModuleInit func;
+
+	if (g_module_symbol (module, "tracker_module_init", (gpointer *) &func)) {
+		(func) ();
+	}
+}
+
+void
+tracker_indexer_module_shutdown (GModule *module)
+{
+	TrackerModuleShutdown func;
+
+	if (g_module_symbol (module, "tracker_module_shutdown", (gpointer *) &func)) {
+		(func) ();
+	}
+}
+
 G_CONST_RETURN gchar *
 tracker_indexer_module_get_name (GModule *module)
 {

Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer-module.h	Wed Jul  2 16:04:15 2008
@@ -29,6 +29,9 @@
 
 GModule *               tracker_indexer_module_load                   (const gchar *module_name);
 
+void                    tracker_indexer_module_init                   (GModule     *module);
+void                    tracker_indexer_module_shutdown               (GModule     *module);
+
 G_CONST_RETURN gchar *  tracker_indexer_module_get_name               (GModule     *module);
 gchar **                tracker_indexer_module_get_directories        (GModule     *module);
 gchar **                tracker_indexer_module_get_ignore_directories (GModule     *module);

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	Wed Jul  2 16:04:15 2008
@@ -355,6 +355,13 @@
 }
 
 static void
+close_module (GModule *module)
+{
+	tracker_indexer_module_shutdown (module);
+	g_module_close (module);
+}
+
+static void
 tracker_indexer_init (TrackerIndexer *indexer)
 {
 	TrackerIndexerPrivate *priv;
@@ -380,7 +387,7 @@
 	priv->indexer_modules = g_hash_table_new_full (g_str_hash,
 						       g_str_equal,
 						       NULL,
-						       (GDestroyNotify) g_module_close);
+						       (GDestroyNotify) close_module);
 
 	for (m = priv->module_names; m; m = m->next) {
 		GModule *module;
@@ -392,6 +399,8 @@
 		module = tracker_indexer_module_load (m->data);
 
 		if (module) {
+			tracker_indexer_module_init (module);
+
 			g_hash_table_insert (priv->indexer_modules,
 					     m->data, module);
 		}
@@ -627,7 +636,6 @@
 	TrackerIndexerPrivate *priv;
 	GModule *module;
 	GList *dirs, *d;
-	gint i;
 
 	priv = TRACKER_INDEXER_GET_PRIVATE (indexer);
 	module = g_hash_table_lookup (priv->indexer_modules, module_name);

Modified: branches/indexer-split/src/tracker-indexer/tracker-module.h
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-module.h	(original)
+++ branches/indexer-split/src/tracker-indexer/tracker-module.h	Wed Jul  2 16:04:15 2008
@@ -31,6 +31,8 @@
 	gpointer  data;
 };
 
+typedef void          (* TrackerModuleInit)               (void);
+typedef void          (* TrackerModuleShutdown)           (void);
 
 typedef const gchar * (* TrackerModuleGetNameFunc)        (void);
 typedef gchar **      (* TrackerModuleGetDirectoriesFunc) (void);
@@ -43,6 +45,9 @@
 typedef gboolean      (* TrackerModuleFileIterContents)    (TrackerFile *path);
 
 
+void                   tracker_module_init                   (void);
+void                   tracker_module_shutdown               (void);
+
 G_CONST_RETURN gchar * tracker_module_get_name               (void);
 gchar **               tracker_module_get_directories        (void);
 gchar **               tracker_module_get_ignore_directories (void);



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