tracker r1402 - in branches/xesam-support: . data src/trackerd



Author: pvanhoof
Date: Tue May 13 11:57:02 2008
New Revision: 1402
URL: http://svn.gnome.org/viewvc/tracker?rev=1402&view=rev

Log:
2008-05-13  Philip Van Hoof  <pvanhoof gnome org>

        * src/trackerd/*xesam*: Various infrastructure for Xesam added



Modified:
   branches/xesam-support/ChangeLog
   branches/xesam-support/data/sqlite-stored-procs.sql
   branches/xesam-support/src/trackerd/tracker-db-sqlite.c
   branches/xesam-support/src/trackerd/tracker-db-sqlite.h
   branches/xesam-support/src/trackerd/tracker-xesam-live-search.c
   branches/xesam-support/src/trackerd/tracker-xesam-query.c

Modified: branches/xesam-support/data/sqlite-stored-procs.sql
==============================================================================
--- branches/xesam-support/data/sqlite-stored-procs.sql	(original)
+++ branches/xesam-support/data/sqlite-stored-procs.sql	Tue May 13 11:57:02 2008
@@ -31,6 +31,7 @@
 
 GetLiveSearchDeletedIDs SELECT E.ServiceID FROM Events as E, LiveSearches as X WHERE E.ServiceID = X.ServiceID AND X.SearchID = ? AND E.EventType IS 'Delete';
 GetLiveSearchHitCount SELECT count(*) FROM LiveSearches WHERE SearchID = ?;
+LiveSearchStopSearch DELETE FROM LiveSearches as X WHERE E.SearchID = ?
 
 GetNewEventID SELECT OptionValue FROM Options WHERE OptionKey = 'EventSequence';
 UpdateNewEventID UPDATE Options set OptionValue = ? WHERE OptionKey = 'EventSequence';

Modified: branches/xesam-support/src/trackerd/tracker-db-sqlite.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-db-sqlite.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-db-sqlite.c	Tue May 13 11:57:02 2008
@@ -3164,8 +3164,6 @@
 
 }
 
-GStaticRecMutex events_table_lock = G_STATIC_REC_MUTEX_INIT;
-
 TrackerDBResultSet* 
 tracker_db_get_live_search_hit_count (DBConnection *db_con, const gchar *search_id)
 {
@@ -3181,28 +3179,32 @@
 {
 	TrackerDBResultSet *result;
 
-	/* This happens in the GMainLoop */
-	g_static_rec_mutex_lock (&events_table_lock);
-
-	/* Uses the Events table */
 	tracker_debug ("GetLiveSearchDeletedIDs");
-
 	result = tracker_exec_proc (db_con->cache, "GetLiveSearchDeletedIDs", search_id, NULL);
 
-	g_static_rec_mutex_unlock (&events_table_lock);
-
 	return result;
 }
 
+void
+tracker_db_stop_live_search (DBConnection *db_con, const gchar *search_id)
+{
+	tracker_debug ("LiveSearchStopSearch");
+	tracker_exec_proc_no_reply (db_con->cache, "LiveSearchStopSearch", search_id, NULL);
+}
+
+
+void
+tracker_db_start_live_search (DBConnection *db_con, const gchar *from_query, const gchar *where_query, const gchar *search_id)
+{
+	tracker_debug ("LiveSearchStartSearch");
+	// TODO
+}
 
 TrackerDBResultSet* 
 tracker_db_get_live_search_new_ids (DBConnection *db_con, const gchar *search_id, const gchar *columns, const gchar *from_query, const gchar *where_query)
 {
 	TrackerDBResultSet *result;
 
-	/* This happens in the GMainLoop */
-	g_static_rec_mutex_lock (&events_table_lock);
-
 	// todo: this is a query for ottela to review
 
 	// Contract, in @result:
@@ -3228,8 +3230,6 @@
 
 	result = tracker_db_interface_execute_query (db_con->common->db, NULL, m_query);
 
-	g_static_rec_mutex_unlock (&events_table_lock);
-
 	g_free (m_query);
 
 	return result;
@@ -3240,14 +3240,10 @@
 {
 	TrackerDBResultSet *result;
 
-	/* This happens in the GMainLoop */
-	g_static_rec_mutex_lock (&events_table_lock);
-	/* Uses the Events table */
 	tracker_debug ("SetEventsBeingHandled");
 	tracker_exec_proc_no_reply (db_con->cache, "SetEventsBeingHandled", NULL);
 	tracker_debug ("GetEvents");
 	result = tracker_exec_proc (db_con->cache, "GetEvents", NULL);
-	g_static_rec_mutex_unlock (&events_table_lock);
 	return result;
 }
 
@@ -3257,9 +3253,6 @@
 {
 	TrackerDBResultSet *result_set;
 
-	/* This happens in the GMainLoop */
-	g_static_rec_mutex_lock (&events_table_lock);
-
 	/* Uses the Events table */
 	tracker_debug ("DeleteHandledEvents");
 
@@ -3267,8 +3260,6 @@
 	if (result_set)
 		g_object_unref (result_set);
 
-	g_static_rec_mutex_unlock (&events_table_lock);
-
 }
 
 static guint32
@@ -3279,14 +3270,10 @@
 	int	   i;
 	guint32	   id = 0;
 
-	/* This happens in the indexer's thread */
-	g_static_rec_mutex_lock (&events_table_lock);
-
 	result_set = tracker_exec_proc (db_con->common, "GetNewEventID", NULL);
 
 	if (!result_set) {
 		tracker_error ("ERROR: could not create event - GetNewEventID failed");
-		g_static_rec_mutex_unlock (&events_table_lock);
 		return 0;
 	}
 
@@ -3312,8 +3299,6 @@
 
 	g_free (eid);
 
-	g_static_rec_mutex_unlock (&events_table_lock);
-
 	return id;
 }
 
@@ -3330,11 +3315,8 @@
 	int	   service_type_id;
 	char	   *str_service_type_id, *path, *name;
 
-	g_static_rec_mutex_lock (&events_table_lock);
-
 	if (!info || !info->uri || !info->uri[0] || !service || !db_con) {
 		tracker_error ("ERROR: cannot create service");
-		g_static_rec_mutex_unlock (&events_table_lock);
 		return 0;
 
 	}
@@ -3354,7 +3336,6 @@
 
 	if (!result_set) {
 		tracker_error ("ERROR: could not create service - GetNewID failed");
-		g_static_rec_mutex_unlock (&events_table_lock);
 		return 0;
 	}
 
@@ -3459,8 +3440,6 @@
 	g_free (str_mtime);
 	g_free (str_offset);
 
-	g_static_rec_mutex_unlock (&events_table_lock);
-
 	return id;
 }
 

Modified: branches/xesam-support/src/trackerd/tracker-db-sqlite.h
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-db-sqlite.h	(original)
+++ branches/xesam-support/src/trackerd/tracker-db-sqlite.h	Tue May 13 11:57:02 2008
@@ -361,11 +361,13 @@
 
 void                tracker_free_metadata_field                (FieldData *field_data);
 
-TrackerDBResultSet *tracker_get_xesam_metadata_names 	       (DBConnection *db_con, const char *name);
-TrackerDBResultSet *tracker_get_xesam_service_names 	       (DBConnection *db_con, const char *name);
+TrackerDBResultSet *tracker_get_xesam_metadata_names           (DBConnection *db_con, const char *name);
+TrackerDBResultSet *tracker_get_xesam_service_names           (DBConnection *db_con, const char *name);
 
-gboolean	    tracker_db_load_xesam_service_file 	       (DBConnection *db_con, const char *filename);
+gboolean            tracker_db_load_xesam_service_file 	       (DBConnection *db_con, const char *filename);
 gboolean            tracker_db_create_xesam_lookup             (DBConnection *db_con);
+void                tracker_db_stop_live_search                (DBConnection *db_con, const gchar *search_id);
+void                tracker_db_start_live_search               (DBConnection *db_con, const gchar *from_query, const gchar *where_query, const gchar *search_id);
 
 G_END_DECLS
 

Modified: branches/xesam-support/src/trackerd/tracker-xesam-live-search.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-xesam-live-search.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-xesam-live-search.c	Tue May 13 11:57:02 2008
@@ -349,10 +349,20 @@
 				 GError                 **error)
 {
 	TrackerXesamLiveSearchPriv *priv = self->priv;
+
 	if (priv->closed)
 		g_set_error (error, TRACKER_XESAM_ERROR, 
 				TRACKER_XESAM_ERROR_SEARCH_CLOSED,
 				"Search was already closed");
+	else {
+		DBConnection *db_con = NULL;
+		TrackerDBusXesam *proxy = TRACKER_DBUS_XESAM (tracker_dbus_get_object (TRACKER_TYPE_DBUS_XESAM));
+
+		g_object_get (proxy, "db-connection", &db_con, NULL);
+		tracker_db_stop_live_search (db_con, 
+			tracker_xesam_live_search_get_id (self));
+	}
+
 	priv->closed = TRUE;
 	priv->active = FALSE;
 }
@@ -623,6 +633,16 @@
 		g_set_error (error, TRACKER_XESAM_ERROR, 
 				TRACKER_XESAM_ERROR_SEARCH_CLOSED,
 				"Search is closed");
+	else {
+		DBConnection *db_con = NULL;
+		TrackerDBusXesam *proxy = TRACKER_DBUS_XESAM (tracker_dbus_get_object (TRACKER_TYPE_DBUS_XESAM));
+
+		g_object_get (proxy, "db-connection", &db_con, NULL);
+		tracker_db_start_live_search (db_con, 
+			tracker_xesam_live_search_get_id (self),
+			tracker_xesam_live_search_get_from_query (self),
+			tracker_xesam_live_search_get_where_query (self));
+	}
 
 	priv->active = TRUE;
 }

Modified: branches/xesam-support/src/trackerd/tracker-xesam-query.c
==============================================================================
--- branches/xesam-support/src/trackerd/tracker-xesam-query.c	(original)
+++ branches/xesam-support/src/trackerd/tracker-xesam-query.c	Tue May 13 11:57:02 2008
@@ -1176,7 +1176,7 @@
 	char       *result;
 	char       *table_name;
 
-	g_return_val_if_fail (query != NULL, NULL);
+	g_return_if_fail (query != NULL);
 
 	if (!inited) {
 		error_quark = g_quark_from_static_string ("XESAM-parser-error-quark");



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