[tracker/binary-log] Revert "Use GIO streams for db journal"
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/binary-log] Revert "Use GIO streams for db journal"
- Date: Tue, 5 Jan 2010 11:54:46 +0000 (UTC)
commit b929778b7868172a8f235283933469ef69f8f060
Author: Martyn Russell <martyn lanedo com>
Date: Tue Jan 5 11:24:23 2010 +0000
Revert "Use GIO streams for db journal"
This reverts commit a9b406eb46f46f2e737893331cf298688eac830d.
src/libtracker-db/tracker-db-journal.c | 116 +++++++-------------------------
1 files changed, 25 insertions(+), 91 deletions(-)
---
diff --git a/src/libtracker-db/tracker-db-journal.c b/src/libtracker-db/tracker-db-journal.c
index 58bcb9d..e4ff221 100644
--- a/src/libtracker-db/tracker-db-journal.c
+++ b/src/libtracker-db/tracker-db-journal.c
@@ -57,8 +57,7 @@ static struct {
} reader;
static gchar *journal_filename = NULL;
-static GFile *journal_file = NULL;
-static GOutputStream *journal_stream = NULL;
+static FILE *journal = NULL;
static gsize cur_size = 0;
static guint cur_block_len = 0;
@@ -132,25 +131,6 @@ cur_setstr (gchar *dest,
memset (dest + (*pos)++, 0 & 0xff, 1);
}
-static gboolean
-write_data (const gchar *buffer,
- gsize size)
-{
- GError *error = NULL;
- gboolean result;
-
- result = g_output_stream_write_all (journal_stream, buffer, size, NULL, NULL, &error);
-
- if (error) {
- g_warning ("Could not append to journal %" G_GSSIZE_FORMAT " bytes, %s",
- size,
- error->message);
- g_clear_error (&error);
- }
-
- return TRUE;
-}
-
GQuark
tracker_db_journal_error_quark (void)
{
@@ -161,9 +141,8 @@ gboolean
tracker_db_journal_init (const gchar *filename)
{
struct stat st;
- GError *error = NULL;
- g_return_val_if_fail (journal_stream == NULL, FALSE);
+ g_return_val_if_fail (journal == NULL, FALSE);
/* Used mostly for testing */
if (G_UNLIKELY (filename)) {
@@ -176,27 +155,7 @@ tracker_db_journal_init (const gchar *filename)
NULL);
}
- journal_file = g_file_new_for_path (journal_filename);
-
- journal_stream = G_OUTPUT_STREAM (g_file_append_to (journal_file,
- G_FILE_CREATE_NONE,
- NULL,
- &error));
-
- if (!journal_stream || error) {
- g_warning ("Could not open stream to append to journal, %s",
- error ? error->message : "no error given");
-
- if (journal_stream) {
- g_object_unref (journal_stream);
- }
-
- if (error) {
- g_error_free (error);
- }
-
- return FALSE;
- }
+ journal = g_fopen (journal_filename, "a");
if (g_stat (journal_filename, &st) == 0) {
cur_size = (gsize) st.st_size;
@@ -219,9 +178,7 @@ tracker_db_journal_init (const gchar *filename)
cur_block[6] = '0';
cur_block[7] = '1';
- if (!write_data (cur_block, 8)) {
- return FALSE;
- }
+ write (fileno (journal), cur_block, 8);
cur_size += 8;
@@ -234,36 +191,23 @@ tracker_db_journal_init (const gchar *filename)
gboolean
tracker_db_journal_shutdown (void)
{
- GError *error = NULL;
+ g_return_val_if_fail (journal != NULL, FALSE);
- g_return_val_if_fail (journal_stream != NULL, FALSE);
-
- g_output_stream_close (journal_stream, NULL, &error);
- g_object_unref (journal_stream);
- journal_stream = NULL;
+ if (journal) {
+ fclose (journal);
+ journal = NULL;
+ }
g_free (journal_filename);
journal_filename = NULL;
- if (journal_file) {
- g_object_unref (journal_file);
- journal_file = NULL;
- }
-
- if (error) {
- g_warning ("Could not close journal output stream, %s",
- error->message);
- g_error_free (error);
- return FALSE;
- }
-
return TRUE;
}
gsize
tracker_db_journal_get_size (void)
{
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
return cur_size;
}
@@ -271,7 +215,7 @@ tracker_db_journal_get_size (void)
const gchar *
tracker_db_journal_get_filename (void)
{
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
return (const gchar*) journal_filename;
}
@@ -281,7 +225,7 @@ tracker_db_journal_start_transaction (void)
{
guint size;
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
size = sizeof (guint32) * 3;
cur_block_maybe_expand (size);
@@ -307,7 +251,7 @@ tracker_db_journal_append_delete_statement (guint32 s_code,
gchar data_format;
gint size;
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
o_len = strlen (object);
data_format = 0x04;
@@ -334,7 +278,7 @@ tracker_db_journal_append_delete_statement_code (guint32 s_code,
gchar data_format;
gint size;
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
data_format = 0x06;
size = sizeof (guint32) * 4;
@@ -361,7 +305,7 @@ tracker_db_journal_append_insert_statement (guint32 s_code,
gchar data_format;
gint size;
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
o_len = strlen (object);
data_format = 0x00;
@@ -388,7 +332,7 @@ tracker_db_journal_append_insert_statement_code (guint32 s_code,
gchar data_format;
gint size;
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
data_format = 0x02;
size = sizeof (guint32) * 4;
@@ -414,7 +358,7 @@ tracker_db_journal_append_resource (guint32 s_code,
gchar data_format;
gint size;
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
o_len = strlen (uri);
data_format = 0x01;
@@ -435,7 +379,7 @@ tracker_db_journal_append_resource (guint32 s_code,
gboolean
tracker_db_journal_rollback_transaction (void)
{
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
cur_block_kill ();
@@ -450,7 +394,7 @@ tracker_db_journal_commit_transaction (void)
guint size;
guint offset;
- g_return_val_if_fail (journal_stream != NULL, FALSE);
+ g_return_val_if_fail (journal != NULL, FALSE);
begin_pos = 0;
size = sizeof (guint32);
@@ -470,10 +414,12 @@ tracker_db_journal_commit_transaction (void)
crc = tracker_crc32 (cur_block + offset, cur_block_len - offset);
cur_setnum (cur_block, &begin_pos, crc);
- if (!write_data (cur_block, cur_block_len)) {
+ /* FIXME: What if we don't write all of len, needs improving. */
+ if (write (fileno (journal), cur_block, cur_block_len) == -1) {
+ g_critical ("Could not write to journal, %s", g_strerror (errno));
return FALSE;
}
-
+
cur_size += cur_block_len;
cur_block_kill ();
@@ -483,21 +429,9 @@ tracker_db_journal_commit_transaction (void)
gboolean
tracker_db_journal_fsync (void)
{
- GError *error = NULL;
- gboolean result;
-
- g_return_val_if_fail (journal_stream != NULL, FALSE);
-
- result = g_output_stream_flush (journal_stream, NULL, &error);
-
- if (error) {
- g_warning ("Could not flush stream for journal, %s",
- error->message);
- g_error_free (error);
- return FALSE;
- }
+ g_return_val_if_fail (journal != NULL, FALSE);
- return result;
+ return fsync (fileno (journal)) == 0;
}
/*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]