tracker r2980 - in trunk: . data/dbus src/libtracker-data src/tracker-indexer src/trackerd
- From: carlosg svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2980 - in trunk: . data/dbus src/libtracker-data src/tracker-indexer src/trackerd
- Date: Thu, 26 Feb 2009 16:52:16 +0000 (UTC)
Author: carlosg
Date: Thu Feb 26 16:52:16 2009
New Revision: 2980
URL: http://svn.gnome.org/viewvc/tracker?rev=2980&view=rev
Log:
2009-02-26 Carlos Garnacho <carlos imendio com>
Refactor Backups to turtle files support out to a
org.freedesktop.Tracker.Backup interface.
* data/dbus/tracker-backup.xml: Definition for the new interface.
* data/dbus/tracker-daemon.xml: Remove Backup method.
* src/libtracker-data/Makefile.am:
* src/libtracker-data/tracker-data-backup.[ch]: New files, contain
the actual saving/restoring to/from turtle files, this was spread
before in tracker-indexer and trackerd.
* src/tracker-indexer/tracker-indexer.c
(tracker_indexer_restore_backup) (restore_backup_cb): Use new
functions in libtracker-data.
* src/trackerd/tracker-backup.[ch]: Now they contain TrackerBackup,
the object that's going to handle petitions from DBus.
* src/trackerd/tracker-dbus.c: Hook the new object into trackerd.
* src/trackerd/tracker-daemon.c: Remove implementation for Backup
method.
* src/trackerd/tracker-main.c:
* src/trackerd/Makefile.am: Miscellaneous changes.
Added:
trunk/data/dbus/tracker-backup.xml
Modified:
trunk/ChangeLog
trunk/data/dbus/Makefile.am
trunk/data/dbus/tracker-daemon.xml
trunk/src/libtracker-data/Makefile.am
trunk/src/tracker-indexer/tracker-indexer.c
trunk/src/trackerd/Makefile.am
trunk/src/trackerd/tracker-backup.c
trunk/src/trackerd/tracker-backup.h
trunk/src/trackerd/tracker-daemon.c
trunk/src/trackerd/tracker-dbus.c
trunk/src/trackerd/tracker-main.c
Modified: trunk/data/dbus/Makefile.am
==============================================================================
--- trunk/data/dbus/Makefile.am (original)
+++ trunk/data/dbus/Makefile.am Thu Feb 26 16:52:16 2009
@@ -3,6 +3,7 @@
configdir = $(datadir)/tracker
config_DATA = \
+ tracker-backup.xml \
tracker-daemon.xml \
tracker-files.xml \
tracker-keywords.xml \
Added: trunk/data/dbus/tracker-backup.xml
==============================================================================
--- (empty file)
+++ trunk/data/dbus/tracker-backup.xml Thu Feb 26 16:52:16 2009
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<node name="/">
+ <interface name="org.freedesktop.Tracker.Backup">
+ <method name="Save">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+ <arg type="s" name="turtle-file" direction="in" />
+ </method>
+ <method name="Restore">
+ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+ <arg type="s" name="turtle-file" direction="in" />
+ </method>
+ </interface>
+</node>
Modified: trunk/data/dbus/tracker-daemon.xml
==============================================================================
--- trunk/data/dbus/tracker-daemon.xml (original)
+++ trunk/data/dbus/tracker-daemon.xml Thu Feb 26 16:52:16 2009
@@ -136,12 +136,6 @@
<annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
</method>
- <!-- Makes a backup). -->
- <method name="Backup">
- <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
- <arg type="s" name="path" direction="in" />
- </method>
-
<!-- Signal change in index status - states are:
"Initializing", "Watching", "Indexing", "Pending",
"Optimizing", "Idle", "Shutdown".
Modified: trunk/src/libtracker-data/Makefile.am
==============================================================================
--- trunk/src/libtracker-data/Makefile.am (original)
+++ trunk/src/libtracker-data/Makefile.am Thu Feb 26 16:52:16 2009
@@ -15,6 +15,7 @@
libtracker_data_LTLIBRARIES = libtracker-data.la
libtracker_data_la_SOURCES = \
+ tracker-data-backup.c \
tracker-data-live-search.c \
tracker-data-manager.c \
tracker-data-metadata.c \
@@ -29,6 +30,7 @@
tracker-xesam-query.c
noinst_HEADERS = \
+ tracker-data-backup.h \
tracker-data-live-search.h \
tracker-data-manager.h \
tracker-data-metadata.h \
Modified: trunk/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-indexer.c (original)
+++ trunk/src/tracker-indexer/tracker-indexer.c Thu Feb 26 16:52:16 2009
@@ -72,6 +72,7 @@
#include <libtracker-data/tracker-data-update.h>
#include <libtracker-data/tracker-data-search.h>
#include <libtracker-data/tracker-turtle.h>
+#include <libtracker-data/tracker-data-backup.h>
#include "tracker-indexer.h"
#include "tracker-indexer-module.h"
@@ -3017,34 +3018,26 @@
}
static void
-restore_backup_triple (void *user_data, const TrackerRaptorStatement *triple) {
-
- const gchar *values[2];
+restore_backup_cb (const gchar *subject,
+ const gchar *predicate,
+ const gchar *object,
+ gpointer user_data)
+{
+ const gchar *values[2] = { object, NULL };
TrackerIndexer *indexer = user_data;
- GError *error = NULL;
+ GError *error = NULL;
- g_return_if_fail (TRACKER_IS_INDEXER (indexer));
-
- g_debug ("Turtle loading <%s, %s, %s>",
- (gchar *)triple->subject,
- (gchar *)triple->predicate,
- (gchar *)triple->object);
-
- values[0] = triple->object;
- values[1] = NULL;
-
- handle_metadata_add (indexer,
- "Files",
- triple->subject,
- triple->predicate,
- (GStrv) values,
+ handle_metadata_add (indexer,
+ "Files",
+ subject,
+ predicate,
+ (GStrv) values,
&error);
if (error) {
g_warning ("Restoring backup: %s", error->message);
g_error_free (error);
}
-
}
void
@@ -3054,6 +3047,7 @@
GError **error)
{
guint request_id;
+ GError *err = NULL;
request_id = tracker_dbus_get_next_request_id ();
@@ -3062,14 +3056,27 @@
tracker_dbus_request_new (request_id,
"DBus request to restore backup data from '%s'",
backup_file);
-
- tracker_turtle_process (backup_file,
- "/",
- (TurtleTripleCallback) restore_backup_triple,
- indexer);
- dbus_g_method_return (context);
- tracker_dbus_request_success (request_id);
+ tracker_data_backup_restore (backup_file,
+ restore_backup_cb,
+ indexer,
+ &err);
+
+ if (err) {
+ GError *actual_error = NULL;
+
+ tracker_dbus_request_failed (request_id,
+ &actual_error,
+ err->message);
+
+ dbus_g_method_return_error (context, actual_error);
+
+ g_error_free (actual_error);
+ g_error_free (err);
+ } else {
+ dbus_g_method_return (context);
+ tracker_dbus_request_success (request_id);
+ }
}
Modified: trunk/src/trackerd/Makefile.am
==============================================================================
--- trunk/src/trackerd/Makefile.am (original)
+++ trunk/src/trackerd/Makefile.am Thu Feb 26 16:52:16 2009
@@ -115,6 +115,7 @@
tracker-marshal.c
dbus_sources = \
+ tracker-backup-glue.h \
tracker-daemon-glue.h \
tracker-files-glue.h \
tracker-keywords-glue.h \
Modified: trunk/src/trackerd/tracker-backup.c
==============================================================================
--- trunk/src/trackerd/tracker-backup.c (original)
+++ trunk/src/trackerd/tracker-backup.c Thu Feb 26 16:52:16 2009
@@ -20,89 +20,100 @@
*/
#include "config.h"
-#include <glib.h>
+#include <glib-object.h>
#include <glib/gstdio.h>
+#include <libtracker-common/tracker-dbus.h>
+#include <libtracker-data/tracker-data-backup.h>
-#ifdef HAVE_RAPTOR
-#include <raptor.h>
-#endif
+#include "tracker-dbus.h"
+#include "tracker-indexer-client.h"
+#include "tracker-backup.h"
-#include <libtracker-data/tracker-data-query.h>
-#include <libtracker-data/tracker-turtle.h>
-#include "tracker-backup.h"
+G_DEFINE_TYPE (TrackerBackup, tracker_backup, G_TYPE_OBJECT)
-/*
- * (uri, metadataid, value)
- */
static void
-extended_result_set_to_turtle (TrackerDBResultSet *result_set, TurtleFile *turtle_file)
+tracker_backup_class_init (TrackerBackupClass *klass)
{
- TrackerField *field;
- gint metadata_id;
- gboolean valid = TRUE;
-
- while (valid) {
- GValue transform = {0, };
- gchar *str = NULL;
- gchar *uri;
- gchar *service_type;
-
- g_value_init (&transform, G_TYPE_STRING);
-
- tracker_db_result_set_get (result_set, 0, &uri, -1);
- tracker_db_result_set_get (result_set, 1, &service_type, -1);
- tracker_db_result_set_get (result_set, 2, &metadata_id, -1);
- tracker_db_result_set_get (result_set, 3, &str, -1);
-
- field = tracker_ontology_get_field_by_id (metadata_id);
- if (!field) {
- g_critical ("Field id %d in database but not in tracker-ontology",
- metadata_id);
- g_free (str);
- g_free (service_type);
- g_free (uri);
- return;
- }
-
- g_debug ("Insertion in turtle <%s, %s, %s>",
- uri, tracker_field_get_name (field), str);
- tracker_turtle_add_triple (turtle_file, uri, field, str);
-
- g_free (str);
- g_free (service_type);
- g_free (uri);
-
- valid = tracker_db_result_set_iter_next (result_set);
- }
+}
+static void
+tracker_backup_init (TrackerBackup *backup)
+{
}
+TrackerBackup *
+tracker_backup_new (void)
+{
+ return g_object_new (TRACKER_TYPE_BACKUP, NULL);
+}
-void
-tracker_backup_save (const gchar *turtle_filename)
+void
+tracker_backup_save (TrackerBackup *object,
+ const gchar *path,
+ DBusGMethodInvocation *context,
+ GError **error)
{
- TrackerDBResultSet *data;
- TrackerService *service;
- TurtleFile *turtle_file;
-
- /* TODO: temporary location */
- if (g_file_test (turtle_filename, G_FILE_TEST_EXISTS)) {
- g_unlink (turtle_filename);
- }
+ guint request_id;
+ GError *err = NULL;
- turtle_file = tracker_turtle_open (turtle_filename);
+ request_id = tracker_dbus_get_next_request_id ();
- g_message ("***** tracker_backup: Saving metadata in turtle file *****");
+ tracker_dbus_request_new (request_id,
+ "DBus request to save backup into '%s'",
+ path);
- service = tracker_ontology_get_service_by_name ("Files");
- data = tracker_data_query_backup_metadata (service);
+ g_message ("Backing up metadata");
+ tracker_data_backup_save (path, &err);
- if (data) {
- extended_result_set_to_turtle (data, turtle_file);
- g_object_unref (data);
- }
+ if (err) {
+ GError *actual_error = NULL;
+
+ tracker_dbus_request_failed (request_id,
+ &actual_error,
+ err->message);
- tracker_turtle_close (turtle_file);
+ dbus_g_method_return_error (context, actual_error);
+
+ g_error_free (actual_error);
+ g_error_free (err);
+ } else {
+ dbus_g_method_return (context);
+ tracker_dbus_request_success (request_id);
+ }
}
+void
+tracker_backup_restore (TrackerBackup *object,
+ const gchar *path,
+ DBusGMethodInvocation *context,
+ GError **error)
+{
+ guint request_id;
+ GError *err = NULL;
+
+ request_id = tracker_dbus_get_next_request_id ();
+
+ tracker_dbus_request_new (request_id,
+ "DBus request to restore backup from '%s'",
+ path);
+
+ org_freedesktop_Tracker_Indexer_restore_backup (tracker_dbus_indexer_get_proxy (),
+ path, &err);
+
+ if (err) {
+ GError *actual_error = NULL;
+
+ tracker_dbus_request_failed (request_id,
+ &actual_error,
+ err->message);
+
+ dbus_g_method_return_error (context, actual_error);
+
+ g_error_free (actual_error);
+ g_error_free (err);
+ } else {
+ dbus_g_method_return (context);
+ tracker_dbus_request_success (request_id);
+ }
+}
Modified: trunk/src/trackerd/tracker-backup.h
==============================================================================
--- trunk/src/trackerd/tracker-backup.h (original)
+++ trunk/src/trackerd/tracker-backup.h Thu Feb 26 16:52:16 2009
@@ -18,11 +18,49 @@
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
-#ifndef __TRACKER_BACKUP_H__
-#define __TRACKER_BACKUP_H__
-#include <glib.h>
+#ifndef __TRACKERD_BACKUP_H__
+#define __TRACKERD_BACKUP_H__
-void tracker_backup_save (const gchar *turtle_filename);
+#include <glib-object.h>
-#endif /* __TRACKER_BACKUP_H__ */
+#define TRACKER_BACKUP_SERVICE "org.freedesktop.Tracker"
+#define TRACKER_BACKUP_PATH "/org/freedesktop/Tracker/Backup"
+#define TRACKER_BACKUP_INTERFACE "org.freedesktop.Tracker.Backup"
+
+G_BEGIN_DECLS
+
+#define TRACKER_TYPE_BACKUP (tracker_backup_get_type ())
+#define TRACKER_BACKUP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), TRACKER_TYPE_BACKUP, TrackerBackup))
+#define TRACKER_BACKUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_TYPE_DBUS_BACKUP, TrackerBackupClass))
+#define TRACKER_IS_BACKUP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), TRACKER_TYPE_BACKUP))
+#define TRACKER_IS_BACKUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_TYPE_BACKUP))
+#define TRACKER_BACKUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_TYPE_BACKUP, TrackerBackupClass))
+
+typedef struct TrackerBackup TrackerBackup;
+typedef struct TrackerBackupClass TrackerBackupClass;
+
+struct TrackerBackup {
+ GObject parent;
+};
+
+struct TrackerBackupClass {
+ GObjectClass parent;
+};
+
+GType tracker_backup_get_type (void) G_GNUC_CONST;
+
+TrackerBackup *tracker_backup_new (void);
+
+void tracker_backup_save (TrackerBackup *object,
+ const gchar *path,
+ DBusGMethodInvocation *context,
+ GError **error);
+void tracker_backup_restore (TrackerBackup *object,
+ const gchar *path,
+ DBusGMethodInvocation *context,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* __TRACKERD_BACKUP_H__ */
Modified: trunk/src/trackerd/tracker-daemon.c
==============================================================================
--- trunk/src/trackerd/tracker-daemon.c (original)
+++ trunk/src/trackerd/tracker-daemon.c Thu Feb 26 16:52:16 2009
@@ -35,7 +35,6 @@
#include "tracker-dbus.h"
#include "tracker-daemon.h"
-#include "tracker-backup.h"
#include <libtracker-data/tracker-data-manager.h>
#include "tracker-indexer-client.h"
#include "tracker-main.h"
@@ -576,30 +575,6 @@
}
void
-tracker_daemon_backup (TrackerDaemon *object,
- const gchar *path,
- DBusGMethodInvocation *context,
- GError **error)
-{
- guint request_id;
-
- request_id = tracker_dbus_get_next_request_id ();
-
- tracker_dbus_request_new (request_id,
- "DBus request to backup, "
- "reindex:%s", path);
-
-
- tracker_backup_save (path);
-
- g_message ("Tracker daemon making a backup");
-
- dbus_g_method_return (context);
-
- tracker_dbus_request_success (request_id);
-}
-
-void
tracker_daemon_shutdown (TrackerDaemon *object,
gboolean reindex,
DBusGMethodInvocation *context,
Modified: trunk/src/trackerd/tracker-dbus.c
==============================================================================
--- trunk/src/trackerd/tracker-dbus.c (original)
+++ trunk/src/trackerd/tracker-dbus.c Thu Feb 26 16:52:16 2009
@@ -41,6 +41,8 @@
#include "tracker-metadata-glue.h"
#include "tracker-search.h"
#include "tracker-search-glue.h"
+#include "tracker-backup.h"
+#include "tracker-backup-glue.h"
#include "tracker-xesam.h"
#include "tracker-xesam-glue.h"
#include "tracker-indexer-client.h"
@@ -374,6 +376,20 @@
TRACKER_SEARCH_PATH);
objects = g_slist_prepend (objects, object);
+ /* Add org.freedesktop.Tracker.Backup */
+ object = tracker_backup_new ();
+ if (!object) {
+ g_critical ("Could not create TrackerBackup object to register");
+ return FALSE;
+ }
+
+ dbus_register_object (connection,
+ gproxy,
+ G_OBJECT (object),
+ &dbus_glib_tracker_backup_object_info,
+ TRACKER_BACKUP_PATH);
+ objects = g_slist_prepend (objects, object);
+
/* Register the XESAM object if enabled */
if (tracker_config_get_enable_xesam (config)) {
object = tracker_xesam_new ();
Modified: trunk/src/trackerd/tracker-main.c
==============================================================================
--- trunk/src/trackerd/tracker-main.c (original)
+++ trunk/src/trackerd/tracker-main.c Thu Feb 26 16:52:16 2009
@@ -57,6 +57,7 @@
#include <libtracker-data/tracker-data-manager.h>
#include <libtracker-data/tracker-turtle.h>
+#include <libtracker-data/tracker-data-backup.h>
#include <tracker-push.h>
@@ -646,7 +647,7 @@
/* If we are reindexing, save the user metadata */
if (private->reindex_on_shutdown) {
- tracker_backup_save (private->ttl_backup_file);
+ tracker_data_backup_save (private->ttl_backup_file, NULL);
}
/* Reset integrity status as threads have closed cleanly */
tracker_data_manager_set_db_option_int ("IntegrityCheck", 0);
@@ -674,7 +675,6 @@
static const gchar *
get_ttl_backup_filename (void)
{
-
TrackerMainPrivate *private;
private = g_static_private_get (&private_key);
@@ -715,7 +715,7 @@
tracker_data_manager_init (config, language, file_index, email_index);
/* Actual save of the metadata */
- tracker_backup_save (get_ttl_backup_filename ());
+ tracker_data_backup_save (get_ttl_backup_filename (), NULL);
/* Shutdown the DB stack */
tracker_data_manager_shutdown ();
@@ -746,12 +746,12 @@
g_signal_handler_disconnect (processor, *callback_id);
if (g_file_test (get_ttl_backup_filename (), G_FILE_TEST_EXISTS)) {
- org_freedesktop_Tracker_Indexer_restore_backup (tracker_dbus_indexer_get_proxy (),
+ org_freedesktop_Tracker_Indexer_restore_backup (tracker_dbus_indexer_get_proxy (),
get_ttl_backup_filename (),
&error);
-
+
if (error) {
- g_message ("Could not restore backup, %s",
+ g_message ("Could not restore backup, %s",
error->message);
g_error_free (error);
return;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]