summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-03-15 18:51:54 +0100
committerCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-03-15 18:51:54 +0100
commit46f9e25beea604333c045ffb92d1d01111c7a077 (patch)
treecdeb5326de4fef0e1ae0606aab775c23ab0508c9
parent2b51a65a1b5175be655123116f6fcb24a6cbd6c0 (diff)
LogStoreSQLite: Purging 5-days-old entries every hour instead of every TPL boot.
This way SQLite is ensured to have 5 days+1 hour old entries at most.
-rw-r--r--telepathy-logger/log-store-sqlite.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/telepathy-logger/log-store-sqlite.c b/telepathy-logger/log-store-sqlite.c
index 0f1a35b04..a1dce644d 100644
--- a/telepathy-logger/log-store-sqlite.c
+++ b/telepathy-logger/log-store-sqlite.c
@@ -47,6 +47,7 @@ static gboolean _insert_to_cache_table (TplLogStore *self,
TplLogEntry *message, GError **error);
static void tpl_log_store_sqlite_purge (TplLogStoreSqlite *self, time_t delta,
GError **error);
+static gboolean purge_entry_timeout (gpointer logstore);
G_DEFINE_TYPE_WITH_CODE (TplLogStoreSqlite, tpl_log_store_sqlite,
@@ -185,7 +186,6 @@ tpl_log_store_sqlite_init (TplLogStoreSqlite *self)
char *filename = get_db_filename ();
int e;
char *errmsg = NULL;
- GError *error = NULL;
DEBUG ("cache file is '%s'", filename);
@@ -229,13 +229,9 @@ tpl_log_store_sqlite_init (TplLogStoreSqlite *self)
goto out;
}
- tpl_log_store_sqlite_purge (self, TPL_LOG_STORE_SQLITE_CLEANUP_DELTA_LIMIT,
- &error);
- if (error != NULL)
- {
- DEBUG ("Unable to purge old entries for Sqlite: %s", error->message);
- g_clear_error (&error);
- }
+ /* purge old entries every hour (60*60 secs) and purges 24h old entries */
+ g_timeout_add_seconds (60*60, purge_entry_timeout, self);
+
/* end of cache table init */
/* start of counter table init */
@@ -970,7 +966,6 @@ out:
return retval;
}
-
void
tpl_log_store_sqlite_set_acknowledgment_by_msg_id (TplLogStore *self,
TpChannel *channel,
@@ -1045,7 +1040,6 @@ out:
sqlite3_finalize (sql);
}
-
static void
tpl_log_store_sqlite_purge (TplLogStoreSqlite *self,
time_t delta,
@@ -1095,6 +1089,24 @@ out:
g_free (date);
}
+static gboolean
+purge_entry_timeout (gpointer logstore)
+{
+ GError *error = NULL;
+ TplLogStoreSqlite *self = logstore;
+
+ tpl_log_store_sqlite_purge (self, TPL_LOG_STORE_SQLITE_CLEANUP_DELTA_LIMIT,
+ &error);
+ if (error != NULL)
+ {
+ CRITICAL ("Unable to purge entries: %s", error->message);
+ g_error_free (error);
+ }
+
+ /* return TRUE to avoid g_timeout_add_seconds cancel the operation */
+ return TRUE;
+}
+
static GList *
tpl_log_store_sqlite_get_chats (TplLogStore *self,
TpAccount *account)