[tracker/binary-log] libtracker-db: Add skeleton for journal reading



commit fe6918a4e9e6ee8b837004e8d6c8a75e6c14297f
Author: Jürg Billeter <j bitron ch>
Date:   Thu Dec 31 12:04:19 2009 +0100

    libtracker-db: Add skeleton for journal reading

 src/libtracker-db/tracker-db-journal.c |   55 ++++++++++++++++++++++++++++++++
 src/libtracker-db/tracker-db-journal.h |   21 ++++++++++++
 2 files changed, 76 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-db/tracker-db-journal.c b/src/libtracker-db/tracker-db-journal.c
index aa8d305..0cba52f 100644
--- a/src/libtracker-db/tracker-db-journal.c
+++ b/src/libtracker-db/tracker-db-journal.c
@@ -33,6 +33,15 @@
 
 #include "tracker-db-journal.h"
 
+static struct {
+	TrackerDBJournalEntryType type;
+	gchar *uri;
+	guint32 s_code;
+	guint32 p_code;
+	guint32 o_code;
+	gchar *object;
+} journal_reader;
+
 static gchar *filename = NULL;
 static FILE *journal = NULL;
 static gsize current_size = 0;
@@ -337,6 +346,52 @@ tracker_db_journal_close (void)
 	filename = NULL;
 }
 
+gboolean
+tracker_db_journal_next (void)
+{
+	return FALSE;
+}
+
+TrackerDBJournalEntryType
+tracker_db_journal_get_type (void)
+{
+	return journal_reader.type;
+}
+
+gchar *
+tracker_db_journal_get_resource (void)
+{
+	g_return_val_if_fail (journal_reader.type == TRACKER_DB_JOURNAL_RESOURCE, NULL);
+
+	return journal_reader.uri;
+}
+
+void
+tracker_db_journal_get_statement (guint32    *s_code,
+                                  guint32    *p_code,
+                                  gchar     **object)
+{
+	g_return_if_fail (journal_reader.type == TRACKER_DB_JOURNAL_INSERT_STATEMENT ||
+	                  journal_reader.type == TRACKER_DB_JOURNAL_DELETE_STATEMENT);
+
+	*s_code = journal_reader.s_code;
+	*p_code = journal_reader.p_code;
+	*object = g_strdup (journal_reader.object);
+}
+
+void
+tracker_db_journal_get_statement_code (guint32    *s_code,
+                                       guint32    *p_code,
+                                       guint32    *o_code)
+{
+	g_return_if_fail (journal_reader.type == TRACKER_DB_JOURNAL_INSERT_STATEMENT_CODE ||
+	                  journal_reader.type == TRACKER_DB_JOURNAL_DELETE_STATEMENT_CODE);
+
+	*s_code = journal_reader.s_code;
+	*p_code = journal_reader.p_code;
+	*o_code = journal_reader.o_code;
+}
+
 #ifdef TEST
 
 #include "libtracker-common/tracker-crc32.c"
diff --git a/src/libtracker-db/tracker-db-journal.h b/src/libtracker-db/tracker-db-journal.h
index b28bd08..b05b7c2 100644
--- a/src/libtracker-db/tracker-db-journal.h
+++ b/src/libtracker-db/tracker-db-journal.h
@@ -27,6 +27,16 @@
 
 G_BEGIN_DECLS
 
+typedef enum {
+	TRACKER_DB_JOURNAL_START_TRANSACTION,
+	TRACKER_DB_JOURNAL_END_TRANSACTION,
+	TRACKER_DB_JOURNAL_RESOURCE,
+	TRACKER_DB_JOURNAL_INSERT_STATEMENT,
+	TRACKER_DB_JOURNAL_INSERT_STATEMENT_CODE,
+	TRACKER_DB_JOURNAL_DELETE_STATEMENT,
+	TRACKER_DB_JOURNAL_DELETE_STATEMENT_CODE
+} TrackerDBJournalEntryType;
+
 const gchar* tracker_db_journal_filename                     (void);
 void         tracker_db_journal_open                         (const gchar *filen);
 
@@ -53,6 +63,17 @@ void         tracker_db_journal_close                        (void);
 void         tracker_db_journal_fsync                        (void);
 gsize        tracker_db_journal_get_size                     (void);
 
+gboolean     tracker_db_journal_next                         (void);
+TrackerDBJournalEntryType
+             tracker_db_journal_get_type                     (void);
+gchar *      tracker_db_journal_get_resource                 (void);
+void         tracker_db_journal_get_statement                (guint32    *s_code,
+                                                              guint32    *p_code,
+                                                              gchar     **object);
+void         tracker_db_journal_get_statement_code           (guint32    *s_code,
+                                                              guint32    *p_code,
+                                                              guint32    *o_code);
+
 G_END_DECLS
 
 #endif /* __LIBTRACKER_DB_JOURNAL_H__ */



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