diff --git a/OpenSim.Framework/Interfaces/ILocalStorage.cs b/OpenSim.Framework/Interfaces/ILocalStorage.cs index a4d2ba1b1d..4dd8868c61 100644 --- a/OpenSim.Framework/Interfaces/ILocalStorage.cs +++ b/OpenSim.Framework/Interfaces/ILocalStorage.cs @@ -36,6 +36,7 @@ namespace OpenSim.Framework.Interfaces /// public interface ILocalStorage { + void Initialise(string datastore); void StorePrim(PrimData prim); void RemovePrim(LLUUID primID); void LoadPrimitives(ILocalStorageReceiver receiver); diff --git a/OpenSim.RegionServer/RegionInfo.cs b/OpenSim.RegionServer/RegionInfo.cs index 2f8bfa12c7..a1923f54ce 100644 --- a/OpenSim.RegionServer/RegionInfo.cs +++ b/OpenSim.RegionServer/RegionInfo.cs @@ -36,6 +36,8 @@ namespace OpenSim public string UserRecvKey = ""; private bool isSandbox; + public string DataStore; + public RegionInfo() { @@ -144,6 +146,17 @@ namespace OpenSim { this.RegionLocY = (uint)Convert.ToUInt32(attri); } + + // Local storage datastore + attri = ""; + attri = configData.GetAttribute("Datastore"); + if (attri == "") + { + string datastore = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Filename for local storage", "localworld.yap"); + configData.SetAttribute("Datastore", datastore); + this.DataStore = datastore; + } + //Sim Listen Port attri = ""; attri = configData.GetAttribute("SimListenPort"); diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs index 0e5dbf0ff4..5443d38a03 100644 --- a/OpenSim.RegionServer/world/World.cs +++ b/OpenSim.RegionServer/world/World.cs @@ -44,6 +44,8 @@ namespace OpenSim.world private AssetCache _assetCache; private Mutex updateLock; + public string m_datastore; + /// /// Creates a new World class, and a region to go with it. /// @@ -257,6 +259,8 @@ namespace OpenSim.world { ILocalStorage plug = (ILocalStorage)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); store = plug; + + store.Initialise(this.m_datastore); break; } diff --git a/OpenSim.Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs b/OpenSim.Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs index 2bcd91c0ca..d4db8c01ab 100644 --- a/OpenSim.Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs +++ b/OpenSim.Storage/LocalStorageBerkeleyDB/BDBLocalStorage.cs @@ -56,6 +56,11 @@ namespace OpenSim.Storage.LocalStorageBDB //vendorDb = (DbBTree)db.Open(null, VendorDbName, null, DbType.BTree, Db.OpenFlags.Create, 0); } + public void Initialise(string file) + { + // Blank + } + public void StorePrim(PrimData prim) { DbEntry key = new DbEntry(); diff --git a/OpenSim.Storage/LocalStorageDb4o/Db4LocalStorage.cs b/OpenSim.Storage/LocalStorageDb4o/Db4LocalStorage.cs index 488da58c32..3c17f1fe21 100644 --- a/OpenSim.Storage/LocalStorageDb4o/Db4LocalStorage.cs +++ b/OpenSim.Storage/LocalStorageDb4o/Db4LocalStorage.cs @@ -41,21 +41,28 @@ namespace OpenSim.Storage.LocalStorageDb4o public class Db4LocalStorage : ILocalStorage { private IObjectContainer db; + private string datastore; public Db4LocalStorage() { - try - { - db = Db4oFactory.OpenFile("localworld.yap"); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Db4LocalStorage creation"); - } - catch(Exception e) - { - db.Close(); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Db4LocalStorage :Constructor - Exception occured"); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine(e.ToString()); - } + } + + public void Initialise(string dfile) + { + datastore = dfile; + try + { + db = Db4oFactory.OpenFile(datastore); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Db4LocalStorage creation"); + } + catch (Exception e) + { + db.Close(); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Db4LocalStorage :Constructor - Exception occured"); + OpenSim.Framework.Console.MainConsole.Instance.WriteLine(e.ToString()); + } + } public void StorePrim(PrimData prim) { diff --git a/OpenSim.Storage/LocalStorageSQLite/SQLiteLocalStorage.cs b/OpenSim.Storage/LocalStorageSQLite/SQLiteLocalStorage.cs index ff7b146cdb..35875a15f9 100644 --- a/OpenSim.Storage/LocalStorageSQLite/SQLiteLocalStorage.cs +++ b/OpenSim.Storage/LocalStorageSQLite/SQLiteLocalStorage.cs @@ -59,6 +59,11 @@ namespace OpenSim.Storage.LocalStorageSQLite } } + public void Initialise(string file) + { + // Blank + } + public void StorePrim(PrimData prim) { IDbCommand cmd = db.CreateCommand();