From 646bbbc84b8010e0dacbeed5342cdb045f46cc49 Mon Sep 17 00:00:00 2001
From: MW
Date: Wed, 27 Jun 2007 15:28:52 +0000
Subject: Some work on restructuring the namespaces / project names. Note this
doesn't compile yet as not all the code has been changed to use the new
namespaces. Am committing it now for feedback on the namespaces.
---
OpenSim/Region/Caches/AssetCache.cs | 670 +++++++++++++++++++++
OpenSim/Region/Caches/OpenSim.Region.Caches.csproj | 97 +++
.../Caches/OpenSim.Region.Caches.csproj.user | 12 +
OpenSim/Region/Caches/Properties/AssemblyInfo.cs | 35 ++
4 files changed, 814 insertions(+)
create mode 100644 OpenSim/Region/Caches/AssetCache.cs
create mode 100644 OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
create mode 100644 OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
create mode 100644 OpenSim/Region/Caches/Properties/AssemblyInfo.cs
(limited to 'OpenSim/Region/Caches')
diff --git a/OpenSim/Region/Caches/AssetCache.cs b/OpenSim/Region/Caches/AssetCache.cs
new file mode 100644
index 0000000..d0cc370
--- /dev/null
+++ b/OpenSim/Region/Caches/AssetCache.cs
@@ -0,0 +1,670 @@
+/*
+* Copyright (c) Contributors, http://www.openmetaverse.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+* * Neither the name of the OpenSim Project nor the
+* names of its contributors may be used to endorse or promote products
+* derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Reflection;
+using libsecondlife;
+using libsecondlife.Packets;
+using OpenSim.Framework.Interfaces;
+using OpenSim.Framework.Types;
+using OpenSim.Framework.Utilities;
+
+namespace OpenSim.Caches
+{
+ public delegate void DownloadComplete(AssetCache.TextureSender sender);
+
+ ///
+ /// Manages local cache of assets and their sending to viewers.
+ ///
+ public class AssetCache : IAssetReceiver
+ {
+ public Dictionary Assets;
+ public Dictionary Textures;
+
+ public List AssetRequests = new List(); //assets ready to be sent to viewers
+ public List TextureRequests = new List(); //textures ready to be sent
+
+ public Dictionary RequestedAssets = new Dictionary(); //Assets requested from the asset server
+ public Dictionary RequestedTextures = new Dictionary(); //Textures requested from the asset server
+
+ public Dictionary SendingTextures = new Dictionary();
+ private IAssetServer _assetServer;
+ private Thread _assetCacheThread;
+ private LLUUID[] textureList = new LLUUID[5];
+
+ ///
+ ///
+ ///
+ public AssetCache(IAssetServer assetServer)
+ {
+ Console.WriteLine("Creating Asset cache");
+ _assetServer = assetServer;
+ _assetServer.SetReceiver(this);
+ Assets = new Dictionary();
+ Textures = new Dictionary();
+ this._assetCacheThread = new Thread(new ThreadStart(RunAssetManager));
+ this._assetCacheThread.IsBackground = true;
+ this._assetCacheThread.Start();
+
+ }
+
+ public AssetCache(string assetServerDLLName, string assetServerURL, string assetServerKey)
+ {
+ Console.WriteLine("Creating Asset cache");
+ _assetServer = this.LoadAssetDll(assetServerDLLName);
+ _assetServer.SetServerInfo(assetServerURL, assetServerKey);
+ _assetServer.SetReceiver(this);
+ Assets = new Dictionary();
+ Textures = new Dictionary();
+ this._assetCacheThread = new Thread(new ThreadStart(RunAssetManager));
+ this._assetCacheThread.IsBackground = true;
+ this._assetCacheThread.Start();
+
+ }
+
+ ///
+ ///
+ ///
+ public void RunAssetManager()
+ {
+ while (true)
+ {
+ try
+ {
+ //Console.WriteLine("Asset cache loop");
+ this.ProcessAssetQueue();
+ this.ProcessTextureQueue();
+ Thread.Sleep(500);
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.Message);
+ }
+ }
+ }
+
+ public void LoadDefaultTextureSet()
+ {
+ //hack: so we can give each user a set of textures
+ textureList[0] = new LLUUID("00000000-0000-0000-9999-000000000001");
+ textureList[1] = new LLUUID("00000000-0000-0000-9999-000000000002");
+ textureList[2] = new LLUUID("00000000-0000-0000-9999-000000000003");
+ textureList[3] = new LLUUID("00000000-0000-0000-9999-000000000004");
+ textureList[4] = new LLUUID("00000000-0000-0000-9999-000000000005");
+
+ for (int i = 0; i < textureList.Length; i++)
+ {
+ this._assetServer.RequestAsset(textureList[i], true);
+ }
+
+ }
+
+ public AssetBase[] CreateNewInventorySet(LLUUID agentID)
+ {
+ AssetBase[] inventorySet = new AssetBase[this.textureList.Length];
+ for (int i = 0; i < textureList.Length; i++)
+ {
+ if (this.Textures.ContainsKey(textureList[i]))
+ {
+ inventorySet[i] = this.CloneImage(agentID, this.Textures[textureList[i]]);
+ TextureImage image = new TextureImage(inventorySet[i]);
+ this.Textures.Add(image.FullID, image);
+ this._assetServer.UploadNewAsset(image); //save the asset to the asset server
+ }
+ }
+ return inventorySet;
+ }
+
+ public AssetBase GetAsset(LLUUID assetID)
+ {
+ AssetBase asset = null;
+ if (this.Textures.ContainsKey(assetID))
+ {
+ asset = this.Textures[assetID];
+ }
+ else if (this.Assets.ContainsKey(assetID))
+ {
+ asset = this.Assets[assetID];
+ }
+ return asset;
+ }
+
+ public void AddAsset(AssetBase asset)
+ {
+ // Console.WriteLine("adding asset " + asset.FullID.ToStringHyphenated());
+ if (asset.Type == 0)
+ {
+ //Console.WriteLine("which is a texture");
+ if (!this.Textures.ContainsKey(asset.FullID))
+ { //texture
+ TextureImage textur = new TextureImage(asset);
+ this.Textures.Add(textur.FullID, textur);
+ this._assetServer.UploadNewAsset(asset);
+ }
+ }
+ else
+ {
+ if (!this.Assets.ContainsKey(asset.FullID))
+ {
+ AssetInfo assetInf = new AssetInfo(asset);
+ this.Assets.Add(assetInf.FullID, assetInf);
+ this._assetServer.UploadNewAsset(asset);
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ private void ProcessTextureQueue()
+ {
+ if (this.TextureRequests.Count == 0)
+ {
+ //no requests waiting
+ return;
+ }
+ int num;
+ num = this.TextureRequests.Count;
+
+ AssetRequest req;
+ for (int i = 0; i < num; i++)
+ {
+ req = (AssetRequest)this.TextureRequests[i];
+ if (!this.SendingTextures.ContainsKey(req.ImageInfo.FullID))
+ {
+ TextureSender sender = new TextureSender(req);
+ sender.OnComplete += this.TextureSent;
+ lock (this.SendingTextures)
+ {
+ this.SendingTextures.Add(req.ImageInfo.FullID, sender);
+ }
+ }
+
+ }
+
+ this.TextureRequests.Clear();
+ }
+
+ ///
+ /// Event handler, called by a TextureSender object to say that texture has been sent
+ ///
+ ///
+ public void TextureSent(AssetCache.TextureSender sender)
+ {
+ if (this.SendingTextures.ContainsKey(sender.request.ImageInfo.FullID))
+ {
+ lock (this.SendingTextures)
+ {
+ this.SendingTextures.Remove(sender.request.ImageInfo.FullID);
+ }
+ }
+ }
+
+ public void AssetReceived(AssetBase asset, bool IsTexture)
+ {
+ if (asset.FullID != LLUUID.Zero) // if it is set to zero then the asset wasn't found by the server
+ {
+ //check if it is a texture or not
+ //then add to the correct cache list
+ //then check for waiting requests for this asset/texture (in the Requested lists)
+ //and move those requests into the Requests list.
+ if (IsTexture)
+ {
+ TextureImage image = new TextureImage(asset);
+ this.Textures.Add(image.FullID, image);
+ if (this.RequestedTextures.ContainsKey(image.FullID))
+ {
+ AssetRequest req = this.RequestedTextures[image.FullID];
+ req.ImageInfo = image;
+ if (image.Data.LongLength > 600)
+ {
+ //over 600 bytes so split up file
+ req.NumPackets = 1 + (int)(image.Data.Length - 600 + 999) / 1000;
+ }
+ else
+ {
+ req.NumPackets = 1;
+ }
+ this.RequestedTextures.Remove(image.FullID);
+ this.TextureRequests.Add(req);
+ }
+ }
+ else
+ {
+ AssetInfo assetInf = new AssetInfo(asset);
+ this.Assets.Add(assetInf.FullID, assetInf);
+ if (this.RequestedAssets.ContainsKey(assetInf.FullID))
+ {
+ AssetRequest req = this.RequestedAssets[assetInf.FullID];
+ req.AssetInf = assetInf;
+ if (assetInf.Data.LongLength > 600)
+ {
+ //over 600 bytes so split up file
+ req.NumPackets = 1 + (int)(assetInf.Data.Length - 600 + 999) / 1000;
+ }
+ else
+ {
+ req.NumPackets = 1;
+ }
+ this.RequestedAssets.Remove(assetInf.FullID);
+ this.AssetRequests.Add(req);
+ }
+ }
+ }
+ }
+
+ public void AssetNotFound(AssetBase asset)
+ {
+ //the asset server had no knowledge of requested asset
+
+ }
+
+ #region Assets
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void AddAssetRequest(IClientAPI userInfo, TransferRequestPacket transferRequest)
+ {
+ LLUUID requestID = new LLUUID(transferRequest.TransferInfo.Params, 0);
+ //check to see if asset is in local cache, if not we need to request it from asset server.
+
+ if (!this.Assets.ContainsKey(requestID))
+ {
+ //not found asset
+ // so request from asset server
+ if (!this.RequestedAssets.ContainsKey(requestID))
+ {
+ AssetRequest request = new AssetRequest();
+ request.RequestUser = userInfo;
+ request.RequestAssetID = requestID;
+ request.TransferRequestID = transferRequest.TransferInfo.TransferID;
+ this.RequestedAssets.Add(requestID, request);
+ this._assetServer.RequestAsset(requestID, false);
+ }
+ return;
+ }
+ //it is in our cache
+ AssetInfo asset = this.Assets[requestID];
+
+ //work out how many packets it should be sent in
+ // and add to the AssetRequests list
+ AssetRequest req = new AssetRequest();
+ req.RequestUser = userInfo;
+ req.RequestAssetID = requestID;
+ req.TransferRequestID = transferRequest.TransferInfo.TransferID;
+ req.AssetInf = asset;
+
+ if (asset.Data.LongLength > 600)
+ {
+ //over 600 bytes so split up file
+ req.NumPackets = 1 + (int)(asset.Data.Length - 600 + 999) / 1000;
+ }
+ else
+ {
+ req.NumPackets = 1;
+ }
+
+ this.AssetRequests.Add(req);
+ }
+
+ ///
+ ///
+ ///
+ private void ProcessAssetQueue()
+ {
+ if (this.AssetRequests.Count == 0)
+ {
+ //no requests waiting
+ return;
+ }
+ int num;
+
+ if (this.AssetRequests.Count < 5)
+ {
+ //lower than 5 so do all of them
+ num = this.AssetRequests.Count;
+ }
+ else
+ {
+ num = 5;
+ }
+ AssetRequest req;
+ for (int i = 0; i < num; i++)
+ {
+ req = (AssetRequest)this.AssetRequests[i];
+
+ TransferInfoPacket Transfer = new TransferInfoPacket();
+ Transfer.TransferInfo.ChannelType = 2;
+ Transfer.TransferInfo.Status = 0;
+ Transfer.TransferInfo.TargetType = 0;
+ Transfer.TransferInfo.Params = req.RequestAssetID.GetBytes();
+ Transfer.TransferInfo.Size = (int)req.AssetInf.Data.Length;
+ Transfer.TransferInfo.TransferID = req.TransferRequestID;
+ req.RequestUser.OutPacket(Transfer);
+
+ if (req.NumPackets == 1)
+ {
+ TransferPacketPacket TransferPacket = new TransferPacketPacket();
+ TransferPacket.TransferData.Packet = 0;
+ TransferPacket.TransferData.ChannelType = 2;
+ TransferPacket.TransferData.TransferID = req.TransferRequestID;
+ TransferPacket.TransferData.Data = req.AssetInf.Data;
+ TransferPacket.TransferData.Status = 1;
+ req.RequestUser.OutPacket(TransferPacket);
+ }
+ else
+ {
+ //more than one packet so split file up , for now it can't be bigger than 2000 bytes
+ TransferPacketPacket TransferPacket = new TransferPacketPacket();
+ TransferPacket.TransferData.Packet = 0;
+ TransferPacket.TransferData.ChannelType = 2;
+ TransferPacket.TransferData.TransferID = req.TransferRequestID;
+ byte[] chunk = new byte[1000];
+ Array.Copy(req.AssetInf.Data, chunk, 1000);
+ TransferPacket.TransferData.Data = chunk;
+ TransferPacket.TransferData.Status = 0;
+ req.RequestUser.OutPacket(TransferPacket);
+
+ TransferPacket = new TransferPacketPacket();
+ TransferPacket.TransferData.Packet = 1;
+ TransferPacket.TransferData.ChannelType = 2;
+ TransferPacket.TransferData.TransferID = req.TransferRequestID;
+ byte[] chunk1 = new byte[(req.AssetInf.Data.Length - 1000)];
+ Array.Copy(req.AssetInf.Data, 1000, chunk1, 0, chunk1.Length);
+ TransferPacket.TransferData.Data = chunk1;
+ TransferPacket.TransferData.Status = 1;
+ req.RequestUser.OutPacket(TransferPacket);
+ }
+
+ }
+
+ //remove requests that have been completed
+ for (int i = 0; i < num; i++)
+ {
+ this.AssetRequests.RemoveAt(0);
+ }
+
+ }
+
+ public AssetInfo CloneAsset(LLUUID newOwner, AssetInfo sourceAsset)
+ {
+ AssetInfo newAsset = new AssetInfo();
+ newAsset.Data = new byte[sourceAsset.Data.Length];
+ Array.Copy(sourceAsset.Data, newAsset.Data, sourceAsset.Data.Length);
+ newAsset.FullID = LLUUID.Random();
+ newAsset.Type = sourceAsset.Type;
+ newAsset.InvType = sourceAsset.InvType;
+ return (newAsset);
+ }
+ #endregion
+
+ #region Textures
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void AddTextureRequest(IClientAPI userInfo, LLUUID imageID)
+ {
+ //Console.WriteLine("texture request for " + imageID.ToStringHyphenated());
+ //check to see if texture is in local cache, if not request from asset server
+ if (!this.Textures.ContainsKey(imageID))
+ {
+ if (!this.RequestedTextures.ContainsKey(imageID))
+ {
+ //not is cache so request from asset server
+ AssetRequest request = new AssetRequest();
+ request.RequestUser = userInfo;
+ request.RequestAssetID = imageID;
+ request.IsTextureRequest = true;
+ this.RequestedTextures.Add(imageID, request);
+ this._assetServer.RequestAsset(imageID, true);
+ }
+ return;
+ }
+
+ //Console.WriteLine("texture already in cache");
+ TextureImage imag = this.Textures[imageID];
+ AssetRequest req = new AssetRequest();
+ req.RequestUser = userInfo;
+ req.RequestAssetID = imageID;
+ req.IsTextureRequest = true;
+ req.ImageInfo = imag;
+
+ if (imag.Data.LongLength > 600)
+ {
+ //over 600 bytes so split up file
+ req.NumPackets = 1 + (int)(imag.Data.Length - 600 + 999) / 1000;
+ }
+ else
+ {
+ req.NumPackets = 1;
+ }
+ this.TextureRequests.Add(req);
+ }
+
+ public TextureImage CloneImage(LLUUID newOwner, TextureImage source)
+ {
+ TextureImage newImage = new TextureImage();
+ newImage.Data = new byte[source.Data.Length];
+ Array.Copy(source.Data, newImage.Data, source.Data.Length);
+ //newImage.filename = source.filename;
+ newImage.FullID = LLUUID.Random();
+ newImage.Name = source.Name;
+ return (newImage);
+ }
+ #endregion
+
+ private IAssetServer LoadAssetDll(string dllName)
+ {
+ Assembly pluginAssembly = Assembly.LoadFrom(dllName);
+ IAssetServer server = null;
+
+ foreach (Type pluginType in pluginAssembly.GetTypes())
+ {
+ if (pluginType.IsPublic)
+ {
+ if (!pluginType.IsAbstract)
+ {
+ Type typeInterface = pluginType.GetInterface("IAssetPlugin", true);
+
+ if (typeInterface != null)
+ {
+ IAssetPlugin plug = (IAssetPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+ server = plug.GetAssetServer();
+ break;
+ }
+
+ typeInterface = null;
+ }
+ }
+ }
+ pluginAssembly = null;
+ return server;
+ }
+
+ public class AssetRequest
+ {
+ public IClientAPI RequestUser;
+ public LLUUID RequestAssetID;
+ public AssetInfo AssetInf;
+ public TextureImage ImageInfo;
+ public LLUUID TransferRequestID;
+ public long DataPointer = 0;
+ public int NumPackets = 0;
+ public int PacketCounter = 0;
+ public bool IsTextureRequest;
+ //public bool AssetInCache;
+ //public int TimeRequested;
+
+ public AssetRequest()
+ {
+
+ }
+ }
+
+ public class AssetInfo : AssetBase
+ {
+ public AssetInfo()
+ {
+
+ }
+
+ public AssetInfo(AssetBase aBase)
+ {
+ Data = aBase.Data;
+ FullID = aBase.FullID;
+ Type = aBase.Type;
+ InvType = aBase.InvType;
+ Name = aBase.Name;
+ Description = aBase.Description;
+ }
+ }
+
+ public class TextureImage : AssetBase
+ {
+ public TextureImage()
+ {
+
+ }
+
+ public TextureImage(AssetBase aBase)
+ {
+ Data = aBase.Data;
+ FullID = aBase.FullID;
+ Type = aBase.Type;
+ InvType = aBase.InvType;
+ Name = aBase.Name;
+ Description = aBase.Description;
+ }
+ }
+
+ public class TextureSender
+ {
+ public AssetRequest request;
+ public event DownloadComplete OnComplete;
+ Thread m_thread;
+ public TextureSender(AssetRequest req)
+ {
+ request = req;
+ //Console.WriteLine("creating worker thread for texture " + req.ImageInfo.FullID.ToStringHyphenated());
+ //Console.WriteLine("texture data length is " + req.ImageInfo.Data.Length);
+ // Console.WriteLine("in " + req.NumPackets + " packets");
+ //ThreadPool.QueueUserWorkItem(new WaitCallback(SendTexture), new object());
+
+ //need some sort of custom threadpool here, as using the .net one, overloads it and stops the handling of incoming packets etc
+ //but don't really want to create a thread for every texture download
+ m_thread = new Thread(new ThreadStart(SendTexture));
+ m_thread.IsBackground = true;
+ m_thread.Start();
+ }
+
+ public void SendTexture()
+ {
+ //Console.WriteLine("starting to send sending texture " + request.ImageInfo.FullID.ToStringHyphenated());
+ while (request.PacketCounter != request.NumPackets)
+ {
+ SendPacket();
+ Thread.Sleep(500);
+ }
+
+ //Console.WriteLine("finished sending texture " + request.ImageInfo.FullID.ToStringHyphenated());
+ if (OnComplete != null)
+ {
+ OnComplete(this);
+ }
+ }
+
+ public void SendPacket()
+ {
+ AssetRequest req = request;
+ // Console.WriteLine("sending " + req.ImageInfo.FullID);
+
+ // if (req.ImageInfo.FullID == new LLUUID("00000000-0000-0000-5005-000000000005"))
+ if (req.PacketCounter == 0)
+ {
+ //first time for this request so send imagedata packet
+ if (req.NumPackets == 1)
+ {
+ //only one packet so send whole file
+ ImageDataPacket im = new ImageDataPacket();
+ im.ImageID.Packets = 1;
+ im.ImageID.ID = req.ImageInfo.FullID;
+ im.ImageID.Size = (uint)req.ImageInfo.Data.Length;
+ im.ImageData.Data = req.ImageInfo.Data;
+ im.ImageID.Codec = 2;
+ req.RequestUser.OutPacket(im);
+ req.PacketCounter++;
+ //req.ImageInfo.l= time;
+ //System.Console.WriteLine("sent texture: " + req.ImageInfo.FullID);
+ // Console.WriteLine("sending packet 1 for " + req.ImageInfo.FullID.ToStringHyphenated());
+ }
+ else
+ {
+ //more than one packet so split file up
+ ImageDataPacket im = new ImageDataPacket();
+ im.ImageID.Packets = (ushort)req.NumPackets;
+ im.ImageID.ID = req.ImageInfo.FullID;
+ im.ImageID.Size = (uint)req.ImageInfo.Data.Length;
+ im.ImageData.Data = new byte[600];
+ Array.Copy(req.ImageInfo.Data, 0, im.ImageData.Data, 0, 600);
+ im.ImageID.Codec = 2;
+ req.RequestUser.OutPacket(im);
+ req.PacketCounter++;
+ //req.ImageInfo.last_used = time;
+ //System.Console.WriteLine("sent first packet of texture:
+ // Console.WriteLine("sending packet 1 for " + req.ImageInfo.FullID.ToStringHyphenated());
+ }
+ }
+ else
+ {
+ //Console.WriteLine("sending packet" + req.PacketCounter + "for " + req.ImageInfo.FullID.ToStringHyphenated());
+ //send imagepacket
+ //more than one packet so split file up
+ ImagePacketPacket im = new ImagePacketPacket();
+ im.ImageID.Packet = (ushort)req.PacketCounter;
+ im.ImageID.ID = req.ImageInfo.FullID;
+ int size = req.ImageInfo.Data.Length - 600 - 1000 * (req.PacketCounter - 1);
+ if (size > 1000) size = 1000;
+ im.ImageData.Data = new byte[size];
+ Array.Copy(req.ImageInfo.Data, 600 + 1000 * (req.PacketCounter - 1), im.ImageData.Data, 0, size);
+ req.RequestUser.OutPacket(im);
+ req.PacketCounter++;
+ //req.ImageInfo.last_used = time;
+ //System.Console.WriteLine("sent a packet of texture: "+req.image_info.FullID);
+ }
+
+ }
+ }
+ }
+}
+
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
new file mode 100644
index 0000000..4a73d08
--- /dev/null
+++ b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
@@ -0,0 +1,97 @@
+
+
+ Local
+ 8.0.50727
+ 2.0
+ {61FCCDB3-0000-0000-0000-000000000000}
+ Debug
+ AnyCPU
+
+
+
+ OpenSim.Region.Caches
+ JScript
+ Grid
+ IE50
+ false
+ Library
+
+ OpenSim.Region.Caches
+
+
+
+
+
+ False
+ 285212672
+ False
+
+
+ TRACE;DEBUG
+
+ True
+ 4096
+ False
+ ..\..\..\bin\
+ False
+ False
+ False
+ 4
+
+
+
+ False
+ 285212672
+ False
+
+
+ TRACE
+
+ False
+ 4096
+ True
+ ..\..\..\bin\
+ False
+ False
+ False
+ 4
+
+
+
+
+ ..\..\..\bin\libsecondlife.dll
+ False
+
+
+ System.dll
+ False
+
+
+ System.Xml.dll
+ False
+
+
+
+
+ OpenSim.Framework
+ {8ACA2445-0000-0000-0000-000000000000}
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ False
+
+
+
+
+ Code
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
new file mode 100644
index 0000000..6841907
--- /dev/null
+++ b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
@@ -0,0 +1,12 @@
+
+
+ Debug
+ AnyCPU
+ C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\
+ 8.0.50727
+ ProjectFiles
+ 0
+
+
+
+
diff --git a/OpenSim/Region/Caches/Properties/AssemblyInfo.cs b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..00f5dfe
--- /dev/null
+++ b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.Caches")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.Caches")]
+[assembly: AssemblyCopyright("Copyright © 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("2b15ddbf-0341-49a6-85c0-cece268a4518")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
--
cgit v1.1
From e41eedc9aeba3eb36cdba4fcdf1e57bea976cab4 Mon Sep 17 00:00:00 2001
From: mingchen
Date: Wed, 27 Jun 2007 16:39:11 +0000
Subject: *Some more restructuring/fixing -- should compile, but high chance I
forgot to add/remove something
---
OpenSim/Region/Caches/AssetCache.cs | 2 +-
OpenSim/Region/Caches/Properties/AssemblyInfo.cs | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Region/Caches')
diff --git a/OpenSim/Region/Caches/AssetCache.cs b/OpenSim/Region/Caches/AssetCache.cs
index d0cc370..6cf921b 100644
--- a/OpenSim/Region/Caches/AssetCache.cs
+++ b/OpenSim/Region/Caches/AssetCache.cs
@@ -36,7 +36,7 @@ using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types;
using OpenSim.Framework.Utilities;
-namespace OpenSim.Caches
+namespace OpenSim.Region.Caches
{
public delegate void DownloadComplete(AssetCache.TextureSender sender);
diff --git a/OpenSim/Region/Caches/Properties/AssemblyInfo.cs b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
index 00f5dfe..5e6ecbb 100644
--- a/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
+++ b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
@@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.Caches")]
+[assembly: AssemblyTitle("OpenSim.Region.Caches")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.Caches")]
+[assembly: AssemblyProduct("OpenSim.Region.Caches")]
[assembly: AssemblyCopyright("Copyright © 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
--
cgit v1.1
From fe120533efd0ec6b2248d96b9a1f8b7637c5dadd Mon Sep 17 00:00:00 2001
From: mingchen
Date: Wed, 27 Jun 2007 17:12:32 +0000
Subject: *Updated prebuild.xml and ran prebuild again *Removed .user, .suo,
and unneccessary files in /bin/Physics/ *OpenSim.sln should compile with nant
and on windows now
---
OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user | 12 ------------
1 file changed, 12 deletions(-)
delete mode 100644 OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
(limited to 'OpenSim/Region/Caches')
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
deleted file mode 100644
index 6841907..0000000
--- a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj.user
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
- Debug
- AnyCPU
- C:\New Folder\second-life-viewer\opensim-dailys2\opensim15-06\NameSpaceChanges\bin\
- 8.0.50727
- ProjectFiles
- 0
-
-
-
-
--
cgit v1.1
From 3456d951d89fbc83f742d40ca8ca2a1a79d414eb Mon Sep 17 00:00:00 2001
From: MW
Date: Thu, 28 Jun 2007 13:13:17 +0000
Subject: Imported the scripting changes, so now should be up to date with
sugilite.
---
.../Region/Caches/OpenSim.Region.Caches.dll.build | 43 ++++++++++++++++++++++
1 file changed, 43 insertions(+)
create mode 100644 OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build
(limited to 'OpenSim/Region/Caches')
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build b/OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build
new file mode 100644
index 0000000..3ca89e8
--- /dev/null
+++ b/OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--
cgit v1.1
From 9b6b6d05d45cf0f754a0b26bf6240ef50be66563 Mon Sep 17 00:00:00 2001
From: lbsa71
Date: Tue, 3 Jul 2007 14:37:29 +0000
Subject: * Optimized usings (the 'LL ate my scripts' commit) * added some
licensing info
---
OpenSim/Region/Caches/AssetCache.cs | 17 ++++++++---------
OpenSim/Region/Caches/Properties/AssemblyInfo.cs | 2 --
2 files changed, 8 insertions(+), 11 deletions(-)
(limited to 'OpenSim/Region/Caches')
diff --git a/OpenSim/Region/Caches/AssetCache.cs b/OpenSim/Region/Caches/AssetCache.cs
index 6cf921b..453edbe 100644
--- a/OpenSim/Region/Caches/AssetCache.cs
+++ b/OpenSim/Region/Caches/AssetCache.cs
@@ -28,13 +28,12 @@
using System;
using System.Collections.Generic;
-using System.Threading;
using System.Reflection;
+using System.Threading;
using libsecondlife;
using libsecondlife.Packets;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Types;
-using OpenSim.Framework.Utilities;
namespace OpenSim.Region.Caches
{
@@ -45,8 +44,8 @@ namespace OpenSim.Region.Caches
///
public class AssetCache : IAssetReceiver
{
- public Dictionary Assets;
- public Dictionary Textures;
+ public Dictionary Assets;
+ public Dictionary Textures;
public List AssetRequests = new List(); //assets ready to be sent to viewers
public List TextureRequests = new List(); //textures ready to be sent
@@ -67,8 +66,8 @@ namespace OpenSim.Region.Caches
Console.WriteLine("Creating Asset cache");
_assetServer = assetServer;
_assetServer.SetReceiver(this);
- Assets = new Dictionary();
- Textures = new Dictionary();
+ Assets = new Dictionary();
+ Textures = new Dictionary();
this._assetCacheThread = new Thread(new ThreadStart(RunAssetManager));
this._assetCacheThread.IsBackground = true;
this._assetCacheThread.Start();
@@ -81,8 +80,8 @@ namespace OpenSim.Region.Caches
_assetServer = this.LoadAssetDll(assetServerDLLName);
_assetServer.SetServerInfo(assetServerURL, assetServerKey);
_assetServer.SetReceiver(this);
- Assets = new Dictionary();
- Textures = new Dictionary();
+ Assets = new Dictionary();
+ Textures = new Dictionary();
this._assetCacheThread = new Thread(new ThreadStart(RunAssetManager));
this._assetCacheThread.IsBackground = true;
this._assetCacheThread.Start();
@@ -216,7 +215,7 @@ namespace OpenSim.Region.Caches
/// Event handler, called by a TextureSender object to say that texture has been sent
///
///
- public void TextureSent(AssetCache.TextureSender sender)
+ public void TextureSent(TextureSender sender)
{
if (this.SendingTextures.ContainsKey(sender.request.ImageInfo.FullID))
{
diff --git a/OpenSim/Region/Caches/Properties/AssemblyInfo.cs b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
index 5e6ecbb..8389415 100644
--- a/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
+++ b/OpenSim/Region/Caches/Properties/AssemblyInfo.cs
@@ -1,7 +1,5 @@
using System.Reflection;
-using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
-
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
--
cgit v1.1
From 5f8de1e7045b9daa2d4f3b21ca826987e32efe6e Mon Sep 17 00:00:00 2001
From: lbsa71
Date: Sun, 8 Jul 2007 19:27:04 +0000
Subject: * By popular demand, all generated build files are now deleted.
Somebody should make sure the wiki is updated.
---
OpenSim/Region/Caches/OpenSim.Region.Caches.csproj | 97 ----------------------
.../Region/Caches/OpenSim.Region.Caches.dll.build | 43 ----------
2 files changed, 140 deletions(-)
delete mode 100644 OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
delete mode 100644 OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build
(limited to 'OpenSim/Region/Caches')
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj b/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
deleted file mode 100644
index 4a73d08..0000000
--- a/OpenSim/Region/Caches/OpenSim.Region.Caches.csproj
+++ /dev/null
@@ -1,97 +0,0 @@
-
-
- Local
- 8.0.50727
- 2.0
- {61FCCDB3-0000-0000-0000-000000000000}
- Debug
- AnyCPU
-
-
-
- OpenSim.Region.Caches
- JScript
- Grid
- IE50
- false
- Library
-
- OpenSim.Region.Caches
-
-
-
-
-
- False
- 285212672
- False
-
-
- TRACE;DEBUG
-
- True
- 4096
- False
- ..\..\..\bin\
- False
- False
- False
- 4
-
-
-
- False
- 285212672
- False
-
-
- TRACE
-
- False
- 4096
- True
- ..\..\..\bin\
- False
- False
- False
- 4
-
-
-
-
- ..\..\..\bin\libsecondlife.dll
- False
-
-
- System.dll
- False
-
-
- System.Xml.dll
- False
-
-
-
-
- OpenSim.Framework
- {8ACA2445-0000-0000-0000-000000000000}
- {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- False
-
-
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
diff --git a/OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build b/OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build
deleted file mode 100644
index 3ca89e8..0000000
--- a/OpenSim/Region/Caches/OpenSim.Region.Caches.dll.build
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--
cgit v1.1