From b84f72df0b7b3917e917a36546c911cb1953b30b Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Sun, 4 Jul 2010 14:59:15 -0700
Subject: Got rid of all hyperassets references. Also fixed accessing textures
 in user's inventory in foreign grids.

---
 OpenSim/Region/ClientStack/LindenUDP/J2KImage.cs   | 17 ++++++----
 .../Region/ClientStack/LindenUDP/LLClientView.cs   |  2 --
 .../Region/ClientStack/LindenUDP/LLImageManager.cs |  5 +--
 .../InventoryAccess/HGInventoryAccessModule.cs     |  8 ++---
 .../InventoryAccess/InventoryAccessModule.cs       |  7 ++++
 .../ServiceConnectorsOut/Asset/HGAssetBroker.cs    |  3 +-
 .../Region/Framework/Interfaces/IHyperService.cs   | 37 ----------------------
 .../Framework/Interfaces/IInventoryAccessModule.cs |  4 ++-
 8 files changed, 25 insertions(+), 58 deletions(-)
 delete mode 100644 OpenSim/Region/Framework/Interfaces/IHyperService.cs

(limited to 'OpenSim')

diff --git a/OpenSim/Region/ClientStack/LindenUDP/J2KImage.cs b/OpenSim/Region/ClientStack/LindenUDP/J2KImage.cs
index f6ad6e1..e9e2dca 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/J2KImage.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/J2KImage.cs
@@ -55,7 +55,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         public IJ2KDecoder J2KDecoder;
         public IAssetService AssetService;
         public UUID AgentID;
-        public IHyperAssetService HyperAssets;
+        public IInventoryAccessModule InventoryAccessModule;
         public OpenJPEG.J2KLayerInfo[] Layers;
         public bool IsDecoded;
         public bool HasAsset;
@@ -375,15 +375,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
             UUID assetID = UUID.Zero;
             if (asset != null)
                 assetID = asset.FullID;
-            else if ((HyperAssets != null) && (sender != HyperAssets))
+            else if ((InventoryAccessModule != null) && (sender != InventoryAccessModule))
             {
-                // Try the user's inventory, but only if it's different from the regions'
-                string userAssets = HyperAssets.GetUserAssetServer(AgentID);
-
-                if ((userAssets != string.Empty) && (userAssets != HyperAssets.GetSimAssetServer()))
+                // Unfortunately we need this here, there's no other way.
+                // This is due to the fact that textures opened directly from the agent's inventory
+                // don't have any distinguishing feature. As such, in order to serve those when the
+                // foreign user is visiting, we need to try again after the first fail to the local
+                // asset service.
+                string assetServerURL = string.Empty;
+                if (InventoryAccessModule.IsForeignUser(AgentID, out assetServerURL))
                 {
                     m_log.DebugFormat("[J2KIMAGE]: texture {0} not found in local asset storage. Trying user's storage.", id);
-                    AssetService.Get(userAssets + "/" + id, HyperAssets, AssetReceived);
+                    AssetService.Get(assetServerURL + "/" + id, InventoryAccessModule, AssetReceived);
                     return;
                 }
             }
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 3a2c019..247c2b2 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -357,7 +357,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         protected uint m_agentFOVCounter;
 
         protected IAssetService m_assetService;
-        private IHyperAssetService m_hyperAssets;
         private const bool m_checkPackets = true;
 
         private Timer m_propertiesPacketTimer;
@@ -432,7 +431,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
 //            m_attachmentsSent = new HashSet<uint>();            
 
             m_assetService = m_scene.RequestModuleInterface<IAssetService>();
-            m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>();
             m_GroupsModule = scene.RequestModuleInterface<IGroupsModule>();
             m_imageManager = new LLImageManager(this, m_assetService, Scene.RequestModuleInterface<IJ2KDecoder>());
             m_channelVersion = Util.StringToBytes256(scene.GetSimulatorVersion());
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLImageManager.cs b/OpenSim/Region/ClientStack/LindenUDP/LLImageManager.cs
index 938cf50..9e0db12 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLImageManager.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLImageManager.cs
@@ -58,8 +58,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         private C5.IntervalHeap<J2KImage> m_priorityQueue = new C5.IntervalHeap<J2KImage>(10, new J2KImageComparer());
         private object m_syncRoot = new object();
 
-        private IHyperAssetService m_hyperAssets;
-
         public LLClientView Client { get { return m_client; } }
         public AssetBase MissingImage { get { return m_missingImage; } }
 
@@ -75,7 +73,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
                 m_log.Error("[ClientView] - Couldn't set missing image asset, falling back to missing image packet. This is known to crash the client");
 
             m_j2kDecodeModule = pJ2kDecodeModule;
-            m_hyperAssets = client.Scene.RequestModuleInterface<IHyperAssetService>();
         }
 
         /// <summary>
@@ -149,7 +146,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
                         imgrequest.J2KDecoder = m_j2kDecodeModule;
                         imgrequest.AssetService = m_assetCache;
                         imgrequest.AgentID = m_client.AgentId;
-                        imgrequest.HyperAssets = m_hyperAssets;
+                        imgrequest.InventoryAccessModule = m_client.Scene.RequestModuleInterface<IInventoryAccessModule>();
                         imgrequest.DiscardLevel = newRequest.DiscardLevel;
                         imgrequest.StartPacket = Math.Max(1, newRequest.PacketNumber);
                         imgrequest.Priority = newRequest.Priority;
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
index 6fdd2a8..cd66af5 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
@@ -192,11 +192,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
                 m_assMapper.Post(item.AssetID, receiver, userAssetServer);
         }
 
- 
-
-        #endregion
-
-        public bool IsForeignUser(UUID userID, out string assetServerURL)
+        public override bool IsForeignUser(UUID userID, out string assetServerURL)
         {
             assetServerURL = string.Empty;
             UserAccount account = null;
@@ -220,6 +216,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
             return false;
         }
 
+        #endregion
+
         protected override InventoryItemBase GetItem(UUID agentID, UUID itemID)
         {
             InventoryItemBase item = base.GetItem(agentID, itemID);
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 39616f7..90b7b51 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -683,6 +683,13 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
             return true;
         }
 
+
+        public virtual bool IsForeignUser(UUID userID, out string assetServerURL)
+        {
+            assetServerURL = string.Empty;
+            return false;
+        }
+
         #endregion
 
         #region Misc
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
index ebd6bbd..034e692 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
@@ -41,7 +41,7 @@ using OpenMetaverse;
 namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
 {
     public class HGAssetBroker :
-            ISharedRegionModule, IAssetService, IHyperAssetService
+            ISharedRegionModule, IAssetService
     {
         private static readonly ILog m_log =
                 LogManager.GetLogger(
@@ -150,7 +150,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
             m_aScene = scene;
 
             scene.RegisterModuleInterface<IAssetService>(this);
-            scene.RegisterModuleInterface<IHyperAssetService>(this);
         }
 
         public void RemoveRegion(Scene scene)
diff --git a/OpenSim/Region/Framework/Interfaces/IHyperService.cs b/OpenSim/Region/Framework/Interfaces/IHyperService.cs
deleted file mode 100644
index 51ea28a..0000000
--- a/OpenSim/Region/Framework/Interfaces/IHyperService.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.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 OpenSimulator 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 OpenMetaverse;
-
-namespace OpenSim.Region.Framework.Interfaces
-{
-    public interface IHyperAssetService
-    {
-        string GetUserAssetServer(UUID userID);
-        string GetSimAssetServer();
-    }
-}
diff --git a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
index 2d4f509..05fc2ad 100644
--- a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
@@ -44,6 +44,8 @@ namespace OpenSim.Region.Framework.Interfaces
                                     bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment);
         void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver);
         bool GetAgentInventoryItem(IClientAPI remoteClient, UUID itemID, UUID requestID);
-        //bool GetTextureFromAgentInventory(UUID agentID, UUID assetID);
+
+        // Must be here because of textures in user's inventory
+        bool IsForeignUser(UUID userID, out string assetServerURL);
     }
 }
-- 
cgit v1.1