From 8fc1dfec792f3527c7f153bd49852519d561d17a Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sun, 15 Jul 2007 15:40:50 +0000 Subject: [PATCH] * Added loading methods for NullStorage. --- OpenSim/Region/Application/OpenSimMain.cs | 5 +- OpenSim/Region/ClientStack/ClientViewBase.cs | 5 +- .../ClientStack/RegionApplicationBase.cs | 1 + OpenSim/Region/Environment/Scenes/Scene.cs | 5 +- OpenSim/Region/Environment/StorageManager.cs | 63 +++++++++++++++++++ OpenSim/Region/Examples/SimpleApp/MyWorld.cs | 6 +- OpenSim/Region/Examples/SimpleApp/Program.cs | 4 +- prebuild.xml | 1 + 8 files changed, 83 insertions(+), 7 deletions(-) create mode 100644 OpenSim/Region/Environment/StorageManager.cs diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index acf09eb55e..7dd426a654 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -44,6 +44,7 @@ using OpenSim.Region.ClientStack; using OpenSim.Region.Communications.Local; using OpenSim.Region.Communications.OGS1; using OpenSim.Region.Environment.Scenes; +using OpenSim.Region.Environment; using System.Text; namespace OpenSim @@ -210,7 +211,9 @@ namespace OpenSim m_udpServer.Add(udpServer); this.regionData.Add(regionDat); - LocalWorld = new Scene(udpServer.PacketServer.ClientManager, regionDat, authenBase, commsManager, this.AssetCache, httpServer); + StorageManager tmpStoreManager = new StorageManager("OpenSim.DataStore.NullStorage.dll", regionDat.DataStore, "base"); + + LocalWorld = new Scene(udpServer.PacketServer.ClientManager, regionDat, authenBase, commsManager, this.AssetCache, tmpStoreManager, httpServer); this.m_localWorld.Add(LocalWorld); //LocalWorld.InventoryCache = InventoryCache; //LocalWorld.AssetCache = AssetCache; diff --git a/OpenSim/Region/ClientStack/ClientViewBase.cs b/OpenSim/Region/ClientStack/ClientViewBase.cs index 211ba8b847..2bc3ed80e9 100644 --- a/OpenSim/Region/ClientStack/ClientViewBase.cs +++ b/OpenSim/Region/ClientStack/ClientViewBase.cs @@ -35,6 +35,7 @@ using libsecondlife; using libsecondlife.Packets; using OpenSim.Framework.Console; using OpenSim.Framework.Utilities; +using OpenSim.Region.Environment; namespace OpenSim.Region.ClientStack { @@ -69,7 +70,7 @@ namespace OpenSim.Region.ClientStack protected virtual void ProcessOutPacket(Packet Pack) { // Keep track of when this packet was sent out - Pack.TickCount = Environment.TickCount; + Pack.TickCount = System.Environment.TickCount; // Console.WriteLine(CircuitCode + ":OUT: " + Pack.Type.ToString()); @@ -245,7 +246,7 @@ namespace OpenSim.Region.ClientStack protected void ResendUnacked() { - int now = Environment.TickCount; + int now = System.Environment.TickCount; lock (NeedAck) { diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs index 1e99c7141f..622b89c362 100644 --- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs +++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs @@ -36,6 +36,7 @@ using OpenSim.Framework.Servers; using OpenSim.Framework.Types; using OpenSim.Physics.Manager; using OpenSim.Region.Caches; +using OpenSim.Region.Environment; namespace OpenSim.Region.ClientStack { diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 64f51d803d..782c0fdf98 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -39,6 +39,7 @@ using OpenSim.Framework.Servers; using OpenSim.Framework.Types; using OpenSim.Physics.Manager; using OpenSim.Region.Caches; +using OpenSim.Region.Interfaces; using OpenSim.Region.Scripting; using OpenSim.Region.Terrain; using Caps = OpenSim.Region.Capabilities.Caps; @@ -65,6 +66,7 @@ namespace OpenSim.Region.Environment.Scenes protected AuthenticateSessionsBase authenticateHandler; protected RegionCommsListener regionCommsHost; protected CommunicationsManager commsManager; + protected StorageManager storageManager; protected Dictionary capsHandlers = new Dictionary(); protected BaseHttpServer httpListener; @@ -118,11 +120,12 @@ namespace OpenSim.Region.Environment.Scenes /// Dictionary to contain client threads /// Region Handle for this region /// Region Name for this region - public Scene(ClientManager clientManager, RegionInfo regInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach, BaseHttpServer httpServer) + public Scene(ClientManager clientManager, RegionInfo regInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer) { updateLock = new Mutex(false); this.authenticateHandler = authen; this.commsManager = commsMan; + this.storageManager = storeManager; this.assetCache = assetCach; m_clientManager = clientManager; m_regInfo = regInfo; diff --git a/OpenSim/Region/Environment/StorageManager.cs b/OpenSim/Region/Environment/StorageManager.cs new file mode 100644 index 0000000000..9f2730fe39 --- /dev/null +++ b/OpenSim/Region/Environment/StorageManager.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Framework.Servers; +using OpenSim.Region.Capabilities; +using OpenSim.Region.Environment.Scenes; +using OpenSim.Region.Interfaces; + +using System.Reflection; + +namespace OpenSim.Region.Environment +{ + public class StorageManager + { + private IRegionDataStore m_dataStore; + + public IRegionDataStore DataStore + { + get + { + return m_dataStore; + } + } + + public StorageManager(IRegionDataStore storage) + { + m_dataStore = storage; + } + + public StorageManager(string dllName, string dataStoreFile, string dataStoreDB) + { + Assembly pluginAssembly = Assembly.LoadFrom(dllName); + + foreach (Type pluginType in pluginAssembly.GetTypes()) + { + if (pluginType.IsPublic) + { + if (!pluginType.IsAbstract) + { + Type typeInterface = pluginType.GetInterface("IRegionDataStore", true); + + if (typeInterface != null) + { + IRegionDataStore plug = (IRegionDataStore)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); + plug.Initialise(dataStoreFile, dataStoreDB); + + m_dataStore = plug; + } + + typeInterface = null; + } + } + } + + pluginAssembly = null; + + //TODO: Add checking and warning to make sure it initialised. + } + } +} diff --git a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs index d0e3fed6f4..bdf1263fc9 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs @@ -8,6 +8,8 @@ using OpenSim.Framework.Types; using OpenSim.Region.Caches; using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Terrain; +using OpenSim.Region.Environment; + using Avatar=OpenSim.Region.Environment.Scenes.ScenePresence; namespace SimpleApp @@ -16,8 +18,8 @@ namespace SimpleApp { private List m_avatars; - public MyWorld(ClientManager clientManager, RegionInfo regionInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach, BaseHttpServer httpServer) - : base(clientManager, regionInfo, authen, commsMan, assetCach, httpServer) + public MyWorld(ClientManager clientManager, RegionInfo regionInfo, AuthenticateSessionsBase authen, CommunicationsManager commsMan, AssetCache assetCach, StorageManager storeMan, BaseHttpServer httpServer) + : base(clientManager, regionInfo, authen, commsMan, assetCach, storeMan, httpServer) { m_avatars = new List(); } diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs index ce60512406..1c502eda64 100644 --- a/OpenSim/Region/Examples/SimpleApp/Program.cs +++ b/OpenSim/Region/Examples/SimpleApp/Program.cs @@ -60,7 +60,9 @@ namespace SimpleApp RegionInfo regionInfo = new RegionInfo(1000, 1000, internalEndPoint, "127.0.0.1"); - world = new MyWorld(packetServer.ClientManager, regionInfo, m_circuitManager, communicationsManager, assetCache, httpServer); + OpenSim.Region.Environment.StorageManager storeMan = new OpenSim.Region.Environment.StorageManager("OpenSim.DataStore.NullStorage.dll", "simpleapp.yap", "simpleapp"); + + world = new MyWorld(packetServer.ClientManager, regionInfo, m_circuitManager, communicationsManager, assetCache, storeMan, httpServer); world.PhysScene = physManager.GetPhysicsScene("basicphysics"); //PhysicsScene.Null; world.LoadWorldMap(); diff --git a/prebuild.xml b/prebuild.xml index a62735bc4b..cea56873ce 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -626,6 +626,7 @@ +