From 656c72befc1d1b3d2aa29c09dd8f75ee2ef5ef8a Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Fri, 19 Oct 2007 08:57:30 +0000 Subject: * some more refactoring + bugfix --- .../Communications/Cache/AssetServerBase.cs | 176 +++++++++++---------- 1 file changed, 92 insertions(+), 84 deletions(-) (limited to 'OpenSim/Framework/Communications/Cache/AssetServerBase.cs') diff --git a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs index 7073000..858019f 100644 --- a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs +++ b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs @@ -22,78 +22,27 @@ namespace OpenSim.Framework.Communications.Cache protected abstract void StoreAsset(AssetBase asset); protected abstract void CommitAssets(); + protected abstract void RunRequests(); + public void LoadDefaultAssets() { MainLog.Instance.Verbose("SQL ASSET SERVER", "Setting up asset database"); - ForEachDefaultAsset( this, StoreAsset ); - ForEachXmlAsset( this, StoreAsset ); + ForEachDefaultAsset(StoreAsset ); + ForEachXmlAsset(StoreAsset ); CommitAssets(); } - public static AssetBase CreateAsset(IAssetServer assetServer, string assetIdStr, string name, string filename, bool isImage) - { - AssetBase asset = new AssetBase( - new LLUUID(assetIdStr), - name - ); - - if (!String.IsNullOrEmpty(filename)) - { - MainLog.Instance.Verbose("ASSETS", "Loading: [{0}][{1}]", name, filename ); - - assetServer.LoadAsset(asset, isImage, filename); - } - else - { - MainLog.Instance.Verbose("ASSETS", "Instantiated: [{0}]", name ); - } - - return asset; - } - - private static AssetBase CreateImageAsset(IAssetServer assetServer, string assetIdStr, string name, string filename) - { - return CreateAsset(assetServer, assetIdStr, name, filename, true); - } - - public static List GetDefaultAssets(IAssetServer assetServer) - { - List assets = new List(); - - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000001", "Bricks", "bricks.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000002", "Plywood", "plywood.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000003", "Rocks", "rocks.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000004", "Granite", "granite.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000005", "Hardwood", "hardwood.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-5005-000000000005", "Prim Base Texture", "plywood.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000006", "Map Base Texture", "map_base.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000007", "Map Texture", "map1.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000010", "Female Body Texture", "femalebody.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000011", "Female Bottom Texture", "femalebottom.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000012", "Female Face Texture", "femaleface.jp2")); - assets.Add(CreateImageAsset(assetServer, "00000000-0000-0000-9999-000000000001", "Bricks", "bricks.jp2")); - - assets.Add(CreateAsset(assetServer, "77c41e39-38f9-f75a-024e-585989bbabbb", "Skin", "base_skin.dat", false)); - assets.Add(CreateAsset(assetServer, "66c41e39-38f9-f75a-024e-585989bfab73", "Shape", "base_shape.dat", false)); - assets.Add(CreateAsset(assetServer, "00000000-38f9-1111-024e-222222111110", "Shirt", "newshirt.dat", false)); - assets.Add(CreateAsset(assetServer, "00000000-38f9-1111-024e-222222111120", "Shirt", "newpants.dat", false)); - - return assets; - } - - public static void ForEachDefaultAsset(IAssetServer assetServer, Action action) - { - List assets = GetDefaultAssets(assetServer); - assets.ForEach(action); - } - public AssetServerBase() { System.Console.WriteLine("Starting Db4o asset storage system"); this._assetRequests = new BlockingQueue(); + + this._localAssetServerThread = new Thread( RunRequests ); + this._localAssetServerThread.IsBackground = true; + this._localAssetServerThread.Start(); } public void LoadAsset(AssetBase info, bool image, string filename) @@ -115,30 +64,6 @@ namespace OpenSim.Framework.Communications.Cache //info.loaded=true; } - public static void ForEachXmlAsset(IAssetServer assetServer, Action action) - { - string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml"); - if (File.Exists(filePath)) - { - XmlConfigSource source = new XmlConfigSource(filePath); - - for (int i = 0; i < source.Configs.Count; i++) - { - string assetIdStr = source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated()); - string name = source.Configs[i].GetString("name", ""); - sbyte type = (sbyte)source.Configs[i].GetInt("assetType", 0); - sbyte invType = (sbyte)source.Configs[i].GetInt("inventoryType", 0); - string fileName = source.Configs[i].GetString("fileName", ""); - - AssetBase newAsset = CreateAsset(assetServer, assetIdStr, name, fileName, false); - - newAsset.Type = type; - newAsset.InvType = invType; - - } - } - } - public void SetReceiver(IAssetReceiver receiver) { this._receiver = receiver; @@ -170,11 +95,94 @@ namespace OpenSim.Framework.Communications.Cache } } + public virtual void Close() + { + _localAssetServerThread.Abort( ); + } + public void SetServerInfo(string ServerUrl, string ServerKey) { } - public abstract void Close(); + public virtual List GetDefaultAssets() + { + List assets = new List(); + + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000001", "Bricks", "bricks.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000002", "Plywood", "plywood.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000003", "Rocks", "rocks.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000004", "Granite", "granite.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000005", "Hardwood", "hardwood.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-5005-000000000005", "Prim Base Texture", "plywood.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000006", "Map Base Texture", "map_base.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000007", "Map Texture", "map1.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000010", "Female Body Texture", "femalebody.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000011", "Female Bottom Texture", "femalebottom.jp2")); + assets.Add(CreateImageAsset("00000000-0000-0000-9999-000000000012", "Female Face Texture", "femaleface.jp2")); + + assets.Add(CreateAsset("77c41e39-38f9-f75a-024e-585989bbabbb", "Skin", "base_skin.dat", false)); + assets.Add(CreateAsset("66c41e39-38f9-f75a-024e-585989bfab73", "Shape", "base_shape.dat", false)); + assets.Add(CreateAsset("00000000-38f9-1111-024e-222222111110", "Shirt", "newshirt.dat", false)); + assets.Add(CreateAsset("00000000-38f9-1111-024e-222222111120", "Shirt", "newpants.dat", false)); + + return assets; + } + + public AssetBase CreateImageAsset(string assetIdStr, string name, string filename) + { + return CreateAsset(assetIdStr, name, filename, true); + } + + public void ForEachDefaultAsset(Action action) + { + List assets = GetDefaultAssets(); + assets.ForEach(action); + } + + public AssetBase CreateAsset(string assetIdStr, string name, string filename, bool isImage) + { + AssetBase asset = new AssetBase( + new LLUUID(assetIdStr), + name + ); + + if (!String.IsNullOrEmpty(filename)) + { + MainLog.Instance.Verbose("ASSETS", "Loading: [{0}][{1}]", name, filename ); + + LoadAsset(asset, isImage, filename); + } + else + { + MainLog.Instance.Verbose("ASSETS", "Instantiated: [{0}]", name ); + } + + return asset; + } + + public void ForEachXmlAsset(Action action) + { + string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml"); + if (File.Exists(filePath)) + { + XmlConfigSource source = new XmlConfigSource(filePath); + + for (int i = 0; i < source.Configs.Count; i++) + { + string assetIdStr = source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated()); + string name = source.Configs[i].GetString("name", ""); + sbyte type = (sbyte)source.Configs[i].GetInt("assetType", 0); + sbyte invType = (sbyte)source.Configs[i].GetInt("inventoryType", 0); + string fileName = source.Configs[i].GetString("fileName", ""); + + AssetBase newAsset = CreateAsset(assetIdStr, name, fileName, false); + + newAsset.Type = type; + newAsset.InvType = invType; + + } + } + } } } \ No newline at end of file -- cgit v1.1