[smuxi] Engine, Frontend-GNOME: changed default message buffer backend to SQLite (closes: #1039, #1041)
- From: Mirco M. M. Bauer <mmmbauer src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [smuxi] Engine, Frontend-GNOME: changed default message buffer backend to SQLite (closes: #1039, #1041)
- Date: Thu, 21 May 2015 21:42:00 +0000 (UTC)
commit 382ec844d97652892184f15887a222e45643139e
Author: Mirco Bauer <meebey meebey net>
Date: Thu May 21 23:38:07 2015 +0200
Engine, Frontend-GNOME: changed default message buffer backend to SQLite (closes: #1039, #1041)
src/Engine/Chats/ChatModel.cs | 2 +-
src/Engine/Config/Config.cs | 73 +++++++++++++++++---
.../Preferences/PreferencesDialog.cs | 20 +++--
3 files changed, 77 insertions(+), 18 deletions(-)
---
diff --git a/src/Engine/Chats/ChatModel.cs b/src/Engine/Chats/ChatModel.cs
index 75dab53..b289a71 100644
--- a/src/Engine/Chats/ChatModel.cs
+++ b/src/Engine/Chats/ChatModel.cs
@@ -285,7 +285,6 @@ namespace Smuxi.Engine
case MessageBufferPersistencyType.Volatile:
MessageBuffer = new ListMessageBuffer();
break;
- case Smuxi.Engine.MessageBufferPersistencyType.Persistent:
case Smuxi.Engine.MessageBufferPersistencyType.PersistentDb4o:
try {
var start = DateTime.UtcNow;
@@ -328,6 +327,7 @@ namespace Smuxi.Engine
MessageBuffer.Add(builder.ToMessage());
}
break;
+ case Smuxi.Engine.MessageBufferPersistencyType.Persistent:
case Smuxi.Engine.MessageBufferPersistencyType.PersistentSqlite: {
var start = DateTime.UtcNow;
MessageBuffer = new SqliteMessageBuffer(
diff --git a/src/Engine/Config/Config.cs b/src/Engine/Config/Config.cs
index 051c806..39cc91b 100644
--- a/src/Engine/Config/Config.cs
+++ b/src/Engine/Config/Config.cs
@@ -1,7 +1,7 @@
/*
* Smuxi - Smart MUltipleXed Irc
*
- * Copyright (c) 2005-2014 Mirco Bauer <meebey meebey net>
+ * Copyright (c) 2005-2015 Mirco Bauer <meebey meebey net>
*
* Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
*
@@ -131,6 +131,9 @@ namespace Smuxi.Engine
if (targetType == typeof(string[])) {
return (T)(object) GetList(key);
}
+ if (targetType == typeof(MessageBufferPersistencyType)) {
+ return (T) Enum.Parse(typeof(MessageBufferPersistencyType), strValue, true);
+ }
// handle empty booleans and integers
if (targetType.IsValueType && String.IsNullOrEmpty(strValue)) {
return default(T);
@@ -238,7 +241,11 @@ namespace Smuxi.Engine
Get(prefix+"Port", 7689);
Get(prefix+"Channel", "TCP");
Get(prefix+"Formatter", "binary");
-
+
+ prefix = "Engine/";
+ var oldConfigVersion = Get<string>(prefix+"ConfigVersion", null);
+ Get(prefix+"ConfigVersion", Engine.AssemblyVersion.ToString());
+
prefix = "Engine/Users/DEFAULT/Interface/";
Get(prefix+"ShowAdvancedSettings", false);
@@ -299,7 +306,8 @@ namespace Smuxi.Engine
Get(prefix+"LogFilteredMessages", false);
prefix = "Engine/Users/DEFAULT/MessageBuffer/";
- Get(prefix+"PersistencyType", "Volatile");
+ Get<string>(prefix+"PersistencyType",
+ MessageBufferPersistencyType.PersistentSqlite.ToString());
prefix = "Engine/Users/DEFAULT/MessageBuffer/Volatile/";
Get(prefix+"MaxCapacity", 200);
prefix = "Engine/Users/DEFAULT/MessageBuffer/Persistent/";
@@ -407,6 +415,14 @@ namespace Smuxi.Engine
// loading defaults
LoadAllEntries("Engine/Users/DEFAULT");
+ // are we upgrading from <= 1.0?
+ if (String.IsNullOrEmpty(oldConfigVersion) ||
+ new Version(oldConfigVersion) < new Version(1, 0)) {
+ // change default value to PersistentSqlite
+ SetUserEntry("DEFAULT", "MessageBuffer/PersistencyType",
+ MessageBufferPersistencyType.PersistentSqlite.ToString());
+ }
+
prefix = "Engine/Users/";
string[] users = GetList(prefix+"Users");
m_Preferences[prefix + "Users"] = users;
@@ -524,7 +540,16 @@ namespace Smuxi.Engine
LoadUserEntry(user, "Logging/Enabled", null);
LoadUserEntry(user, "Logging/LogFilteredMessages", null);
- LoadUserEntry(user, "MessageBuffer/PersistencyType", null);
+ var persistencyKey = "MessageBuffer/PersistencyType";
+ LoadUserEntry(user, persistencyKey , null);
+ // are we upgrading from < 1.0?
+ if (String.IsNullOrEmpty(oldConfigVersion) ||
+ new Version(oldConfigVersion) < new Version(1, 0)) {
+ // migrate all users automatically to SQLite
+ SetUserEntry(user, persistencyKey,
+ MessageBufferPersistencyType.PersistentSqlite.ToString());
+ }
+
LoadUserEntry(user, "MessageBuffer/Volatile/MaxCapacity", null);
LoadUserEntry(user, "MessageBuffer/Persistent/MaxCapacity", null);
@@ -709,22 +734,52 @@ namespace Smuxi.Engine
}
}
+
+ protected string GetUserKey(string user, string key)
+ {
+ var prefix = "Engine/Users/";
+ var ukey = prefix+user+"/"+key;
+ return ukey;
+ }
+
+ [Obsolete]
+ protected object GetUserEntry(string user, string key, object defaultvalue)
+ {
+ var ukey = GetUserKey(user, key);
+ return Get(ukey, defaultvalue);
+ }
+
+ protected T GetUserEntry<T>(string user, string key, T defaultvalue)
+ {
+ var ukey = GetUserKey(user, key);
+ return Get<T>(ukey, defaultvalue);
+ }
+
+ protected void SetUserEntry(string user, string key, object value)
+ {
+#if CONFIG_DEBUG
+ Trace.Call(user, key, value);
+#endif
+ var ukey = GetUserKey(user, key);
+ m_Preferences[ukey] = value;
+ }
+
protected void LoadUserEntry(string user, string key, object defaultvalue)
{
#if CONFIG_DEBUG
Trace.Call(user, key, defaultvalue);
#endif
- string prefix = "Engine/Users/";
- string ukey = prefix+user+"/"+key;
object obj;
if (defaultvalue is string) {
- obj = Get<string>(ukey, (string) defaultvalue);
+ obj = GetUserEntry<string>(user, key, (string) defaultvalue);
+ } else if (defaultvalue is bool) {
+ obj = GetUserEntry<bool>(user, key, (bool) defaultvalue);
} else {
- obj = Get(ukey, defaultvalue);
+ obj = GetUserEntry(user, key, defaultvalue);
}
if (obj != null) {
- m_Preferences[ukey] = obj;
+ SetUserEntry(user, key, obj);
}
}
diff --git a/src/Frontend-GNOME/Preferences/PreferencesDialog.cs
b/src/Frontend-GNOME/Preferences/PreferencesDialog.cs
index 52c76ed..15a0406 100644
--- a/src/Frontend-GNOME/Preferences/PreferencesDialog.cs
+++ b/src/Frontend-GNOME/Preferences/PreferencesDialog.cs
@@ -191,7 +191,7 @@ namespace Smuxi.Frontend.Gnome
"The Db4o backend has known issues like high memory and CPU " +
"usage and can even lead to crashes and thus it is deprecated.\n" +
"The SQLite backend has no known performance or stability " +
- "issues but is still an optional preview feature."
+ "issues and is the recommended setting."
);
// glade might initialize it already!
persistencyTypeComboBox.Clear();
@@ -203,16 +203,20 @@ namespace Smuxi.Frontend.Gnome
typeof(MessageBufferPersistencyType), typeof(string)
);
// fill ListStore
- store.AppendValues(MessageBufferPersistencyType.Volatile,
- _("Volatile"));
- store.AppendValues(MessageBufferPersistencyType.Persistent,
- _("Persistent (Preview)"));
- if (Frontend.EngineProtocolVersion >= new Version("0.12")) {
+ if (Frontend.EngineProtocolVersion >= new Version(0, 12)) {
+ store.AppendValues(MessageBufferPersistencyType.PersistentSqlite,
+ _("Persistent: SQLite (Recommended)"));
+ }
+ if (Frontend.EngineProtocolVersion >= new Version(0, 8, 9)) {
store.AppendValues(MessageBufferPersistencyType.PersistentDb4o,
_("Persistent: Db4o (Deprecated)"));
- store.AppendValues(MessageBufferPersistencyType.PersistentSqlite,
- _("Persistent: SQLite (Preview)"));
}
+ if (Frontend.EngineProtocolVersion < new Version(0, 12)) {
+ store.AppendValues(MessageBufferPersistencyType.Persistent,
+ _("Persistent (Preview)"));
+ }
+ store.AppendValues(MessageBufferPersistencyType.Volatile,
+ _("Volatile"));
persistencyTypeComboBox.Model = store;
persistencyTypeComboBox.Active = 0;
if (Frontend.EngineProtocolVersion < new Version("0.8.1")) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]