tracker r1841 - in branches/indexer-split: . src/trackerd
- From: pvanhoof svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1841 - in branches/indexer-split: . src/trackerd
- Date: Thu, 3 Jul 2008 09:43:37 +0000 (UTC)
Author: pvanhoof
Date: Thu Jul 3 09:43:36 2008
New Revision: 1841
URL: http://svn.gnome.org/viewvc/tracker?rev=1841&view=rev
Log:
2008-07-03 Philip Van Hoof <pvanhoof gnome org>
* src/trackerd/tracker-files.c: Using the indexer to implement
deleting files from the index
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/src/trackerd/tracker-files.c
Modified: branches/indexer-split/src/trackerd/tracker-files.c
==============================================================================
--- branches/indexer-split/src/trackerd/tracker-files.c (original)
+++ branches/indexer-split/src/trackerd/tracker-files.c Thu Jul 3 09:43:36 2008
@@ -37,6 +37,7 @@
#include "tracker-files.h"
#include "tracker-db.h"
#include "tracker-marshal.h"
+#include "tracker-indexer-client.h"
G_DEFINE_TYPE(TrackerFiles, tracker_files, G_TYPE_OBJECT)
@@ -234,6 +235,13 @@
return created;
}
+static void
+on_indexer_deleted (DBusGProxy *proxy, GError *error, gpointer user_data)
+{
+ GStrv files = user_data;
+ g_strfreev (files);
+}
+
gboolean
tracker_files_delete (TrackerFiles *object,
const gchar *uri,
@@ -243,20 +251,16 @@
TrackerDBResultSet *result_set;
guint request_id;
guint32 file_id;
- gchar *name;
+ gchar *full;
gchar *path;
+ gchar *name;
gboolean is_directory;
- TrackerDBAction action;
+ GStrv files;
request_id = tracker_dbus_get_next_request_id ();
tracker_dbus_return_val_if_fail (uri != NULL, FALSE, error);
- tracker_dbus_request_new (request_id,
- "DBus request to delete file, "
- "uri:'%s'",
- uri);
-
iface = tracker_db_manager_get_db_interface_by_service (TRACKER_DB_FOR_FILE_SERVICE);
file_id = tracker_db_file_get_id (iface, uri);
@@ -264,6 +268,7 @@
tracker_dbus_request_comment (request_id,
"File or directory was not in database to delete, uri:'%s'",
uri);
+
tracker_dbus_request_success (request_id);
return TRUE;
}
@@ -271,46 +276,52 @@
if (uri[0] == G_DIR_SEPARATOR) {
name = g_path_get_basename (uri);
path = g_path_get_dirname (uri);
+ full = g_strdup (uri);
} else {
name = tracker_file_get_vfs_name (uri);
path = tracker_file_get_vfs_path (uri);
+ full = g_build_filename (G_DIR_SEPARATOR_S, path, name, NULL);
}
is_directory = FALSE;
-
+
result_set = tracker_db_exec_proc (iface,
"GetServiceID",
path,
name,
NULL);
+ g_free (name);
+ g_free (path);
+
if (result_set) {
tracker_db_result_set_get (result_set, 2, &is_directory, -1);
g_object_unref (result_set);
}
- if (is_directory) {
- action = TRACKER_DB_ACTION_DIRECTORY_DELETED;
- } else {
- action = TRACKER_DB_ACTION_FILE_DELETED;
- }
-
- /* tracker_db_insert_pending_file (iface_cache, */
- /* file_id, */
- /* uri, */
- /* NULL, */
- /* g_strdup ("unknown"), */
- /* 0, */
- /* action, */
- /* is_directory, */
- /* FALSE, */
- /* -1); */
+ files = (GStrv) g_malloc0 (sizeof (gchar*) * 1);
- g_free (path);
- g_free (name);
+ /* full is freed as part of the GStrv in the callback */
+ files[0] = full;
- tracker_dbus_request_success (request_id);
+ tracker_dbus_request_new (request_id,
+ "DBus request to delete file, "
+ "uri:'%s'",
+ uri);
- return TRUE;
+ org_freedesktop_Tracker_Indexer_files_delete_async (tracker_dbus_indexer_get_proxy (),
+ "files",
+ (const char **) files,
+ on_indexer_deleted,
+ files);
+
+ /* When we refactor to use async DBus api implementations, we can start
+ * caring about errors that happen in on_indexer_deleted and only
+ * dbus_g_method_return_error or dbus_g_method_return in the callback
+ * on_indexer_deleted */
+
+ tracker_dbus_request_success (request_id);
+
+ return TRUE;
}
gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]