[tracker/urho-sync] Refactored the journal code a bit
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/urho-sync] Refactored the journal code a bit
- Date: Wed, 5 Aug 2009 08:43:40 +0000 (UTC)
commit 57e8168e31fcd5322798bd2b66f1f079b100ed76
Author: Philip Van Hoof <philip codeminded be>
Date: Wed Aug 5 10:43:02 2009 +0200
Refactored the journal code a bit
src/libtracker-db/Makefile.am | 6 +-
src/libtracker-db/tracker-db-backup.c | 2 +-
src/libtracker-db/tracker-db-backup.h | 2 +
src/libtracker-db/tracker-db-interface-sqlite.h | 3 -
src/libtracker-db/tracker-db-journal.c | 90 +++++++++++++++++++++++
src/libtracker-db/tracker-db-journal.h | 41 ++++++++++
src/libtracker-db/tracker-db-manager.c | 3 +-
src/tracker-store/tracker-store.c | 48 ++++--------
8 files changed, 155 insertions(+), 40 deletions(-)
---
diff --git a/src/libtracker-db/Makefile.am b/src/libtracker-db/Makefile.am
index 65fffa9..31eaa25 100644
--- a/src/libtracker-db/Makefile.am
+++ b/src/libtracker-db/Makefile.am
@@ -20,14 +20,16 @@ libtracker_db_la_SOURCES = \
tracker-db-interface.c \
tracker-db-interface-sqlite.c \
tracker-db-manager.c \
- tracker-db-backup.c
+ tracker-db-backup.c \
+ tracker-db-journal.c
noinst_HEADERS = \
tracker-db-dbus.h \
tracker-db-interface.h \
tracker-db-interface-sqlite.h \
tracker-db-manager.h \
- tracker-db-backup.h
+ tracker-db-backup.h \
+ tracker-db-journal.h
libtracker_db_la_LDFLAGS = \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
diff --git a/src/libtracker-db/tracker-db-backup.c b/src/libtracker-db/tracker-db-backup.c
index 647995f..4ed9a3c 100644
--- a/src/libtracker-db/tracker-db-backup.c
+++ b/src/libtracker-db/tracker-db-backup.c
@@ -190,7 +190,7 @@ tracker_db_backup_save (TrackerBackupFinished callback,
file = g_file_new_for_path (db_file);
parent = g_file_get_parent (file);
g_object_unref (file);
- file = g_file_get_child (parent, TRACKER_META_BACKUP_DB_FILENAME);
+ file = g_file_get_child (parent, TRACKER_DB_BACKUP_META_FILENAME);
g_object_unref (parent);
info->backup_fname = g_file_get_path (file);
g_object_unref (file);
diff --git a/src/libtracker-db/tracker-db-backup.h b/src/libtracker-db/tracker-db-backup.h
index e8ec27a..c67d6dc 100644
--- a/src/libtracker-db/tracker-db-backup.h
+++ b/src/libtracker-db/tracker-db-backup.h
@@ -26,6 +26,8 @@
#include <glib.h>
#include <gio/gio.h>
+#define TRACKER_DB_BACKUP_META_FILENAME "meta-backup.db"
+
G_BEGIN_DECLS
#define TRACKER_DB_BACKUP_ERROR (tracker_db_backup_error_quark ())
diff --git a/src/libtracker-db/tracker-db-interface-sqlite.h b/src/libtracker-db/tracker-db-interface-sqlite.h
index bd2e305..8ef3ace 100644
--- a/src/libtracker-db/tracker-db-interface-sqlite.h
+++ b/src/libtracker-db/tracker-db-interface-sqlite.h
@@ -20,9 +20,6 @@
#ifndef __TRACKER_DB_INTERFACE_SQLITE_H__
#define __TRACKER_DB_INTERFACE_SQLITE_H__
-#define TRACKER_META_BACKUP_DB_FILENAME "meta-backup.db"
-#define TRACKER_META_BACKUP_LOG_FILENAME "log.sparql.txt"
-
#include "tracker-db-interface.h"
G_BEGIN_DECLS
diff --git a/src/libtracker-db/tracker-db-journal.c b/src/libtracker-db/tracker-db-journal.c
new file mode 100644
index 0000000..a704531
--- /dev/null
+++ b/src/libtracker-db/tracker-db-journal.c
@@ -0,0 +1,90 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * Author: Philip Van Hoof <philip codeminded be>
+ */
+#include "config.h"
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "tracker-db-journal.h"
+
+static gchar *filename = NULL;
+static FILE *journal = NULL;
+
+static void
+get_filename (void)
+{
+ if (!filename) {
+ filename = g_build_filename (g_get_tmp_dir (),
+ TRACKER_DB_JOURNAL_LOG_FILENAME,
+ NULL);
+ }
+}
+
+void
+tracker_db_journal_open (void)
+{
+ get_filename ();
+ journal = fopen (filename, "a");
+}
+
+void
+tracker_db_journal_log (const gchar *query)
+{
+ if (journal) {
+ write (fileno (journal), query, strlen (query));
+ write (fileno (journal), "\n", 1);
+ fsync (fileno (journal));
+ }
+}
+
+void
+tracker_db_journal_truncate (void)
+{
+ if (journal) {
+ ftruncate(fileno (journal), 0);
+ }
+}
+
+void
+tracker_db_journal_close (void)
+{
+ if (journal) {
+ fclose (journal);
+ }
+
+ g_free (filename);
+}
+
+gchar *
+tracker_db_journal_get_content (void)
+{
+ gchar *lines = NULL;
+ gsize len;
+
+ get_filename ();
+
+ g_file_get_contents (filename, &lines, &len, NULL);
+
+ return lines;
+}
diff --git a/src/libtracker-db/tracker-db-journal.h b/src/libtracker-db/tracker-db-journal.h
new file mode 100644
index 0000000..bb2aeac
--- /dev/null
+++ b/src/libtracker-db/tracker-db-journal.h
@@ -0,0 +1,41 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * Author: Philip Van Hoof <philip codeminded be>
+ */
+
+#ifndef __TRACKER_DB_JOURNAL_H__
+#define __TRACKER_DB_JOURNAL_H__
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#define TRACKER_DB_JOURNAL_LOG_FILENAME "log.sparql.txt"
+
+G_BEGIN_DECLS
+
+void tracker_db_journal_open (void);
+void tracker_db_journal_log (const gchar *query);
+void tracker_db_journal_truncate (void);
+void tracker_db_journal_close (void);
+gchar * tracker_db_journal_get_content (void);
+
+G_END_DECLS
+
+#endif /* __TRACKER_DB_JOURNAL_H__ */
diff --git a/src/libtracker-db/tracker-db-manager.c b/src/libtracker-db/tracker-db-manager.c
index f9f031c..89fee9c 100644
--- a/src/libtracker-db/tracker-db-manager.c
+++ b/src/libtracker-db/tracker-db-manager.c
@@ -35,6 +35,7 @@
#include <libtracker-common/tracker-type-utils.h>
#include <libtracker-common/tracker-utils.h>
+#include "tracker-db-backup.h"
#include "tracker-db-manager.h"
#include "tracker-db-interface-sqlite.h"
@@ -1144,7 +1145,7 @@ tracker_db_manager_init (TrackerDBManagerFlags flags,
GFile *parent, *backup;
parent = g_file_get_parent (file);
- backup = g_file_get_child (parent, TRACKER_META_BACKUP_DB_FILENAME);
+ backup = g_file_get_child (parent, TRACKER_DB_BACKUP_META_FILENAME);
if (g_file_query_exists (backup, NULL)) {
g_file_move (backup, file, G_FILE_COPY_OVERWRITE, NULL,
diff --git a/src/tracker-store/tracker-store.c b/src/tracker-store/tracker-store.c
index d4c862f..c04635e 100644
--- a/src/tracker-store/tracker-store.c
+++ b/src/tracker-store/tracker-store.c
@@ -28,6 +28,7 @@
#include <libtracker-common/tracker-dbus.h>
#include <libtracker-db/tracker-db-dbus.h>
#include <libtracker-db/tracker-db-backup.h>
+#include <libtracker-db/tracker-db-journal.h>
#include <libtracker-db/tracker-db-interface-sqlite.h>
#include <libtracker-data/tracker-data-update.h>
@@ -71,7 +72,6 @@ typedef struct {
} TrackerStoreTask;
static GStaticPrivate private_key = G_STATIC_PRIVATE_INIT;
-static FILE *journal = NULL;
static void
private_free (gpointer data)
@@ -181,10 +181,8 @@ queue_idle_handler (gpointer user_data)
tracker_data_update_sparql (task->data.query, &error);
- if (journal && private->start_log) {
- write (fileno (journal), task->data.query, strlen (task->data.query));
- write (fileno (journal), "\n", 1);
- fsync (fileno (journal));
+ if (private->start_log) {
+ tracker_db_journal_log (task->data.query);
}
if (!error) {
@@ -259,7 +257,7 @@ static void
on_backup_done (GError *error, gpointer user_data)
{
if (!error) {
- ftruncate(fileno (journal), 0);
+ tracker_db_journal_truncate ();
}
}
@@ -285,7 +283,7 @@ sync_idle_destroy (gpointer user_data)
{
TrackerStorePrivate *private = user_data;
- fclose (journal);
+ tracker_db_journal_close ();
private->have_sync_handler = FALSE;
}
@@ -295,9 +293,7 @@ on_committed (gpointer user_data)
{
TrackerStorePrivate *private;
- if (journal) {
- ftruncate(fileno (journal), 0);
- }
+ tracker_db_journal_truncate ();
private = g_static_private_get (&private_key);
g_return_if_fail (private != NULL);
@@ -315,9 +311,7 @@ void
tracker_store_init (gboolean load_journal)
{
TrackerStorePrivate *private;
- gchar *filename;
gchar *lines = NULL;
- gsize len;
private = g_new0 (TrackerStorePrivate, 1);
@@ -327,15 +321,11 @@ tracker_store_init (gboolean load_journal)
private,
private_free);
- filename = g_build_filename (g_get_tmp_dir (),
- TRACKER_META_BACKUP_LOG_FILENAME,
- NULL);
-
if (load_journal) {
- g_file_get_contents (filename, &lines, &len, NULL);
+ lines = tracker_db_journal_get_content ();
}
- journal = fopen (filename, "a");
+ tracker_db_journal_open ();
if (lines) {
@@ -353,16 +343,11 @@ tracker_store_init (gboolean load_journal)
private->start_log = TRUE;
}
- g_free (filename);
-
- if (journal) {
- private->sync_handler = g_timeout_add_seconds_full (G_PRIORITY_LOW,
- 60,
- sync_idle_handler,
- private,
- sync_idle_destroy);
- }
-
+ private->sync_handler = g_timeout_add_seconds_full (G_PRIORITY_LOW,
+ 60,
+ sync_idle_handler,
+ private,
+ sync_idle_destroy);
}
void
@@ -498,11 +483,8 @@ tracker_store_sparql_update (const gchar *sparql,
tracker_data_update_sparql (sparql, error);
- if (journal && private->start_log) {
- write (fileno (journal), sparql, strlen (sparql));
- write (fileno (journal), "\n", 1);
-
- fsync (fileno (journal));
+ if (private->start_log) {
+ tracker_db_journal_log (sparql);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]