From 42f978a478093da579907e15dc29680a3711b27e Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 30 Jan 2010 09:23:07 -0800 Subject: * HGScene is no more. * Moved a few key inventory access methods from Scene.Inventory to an IInventoryAccessModule module --- .../Framework/Scenes/Hypergrid/HGAssetMapper.cs | 264 --------------------- .../Scenes/Hypergrid/HGScene.Inventory.cs | 175 -------------- .../Framework/Scenes/Hypergrid/HGUuidGatherer.cs | 56 ----- 3 files changed, 495 deletions(-) delete mode 100644 OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs delete mode 100644 OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs delete mode 100644 OpenSim/Region/Framework/Scenes/Hypergrid/HGUuidGatherer.cs (limited to 'OpenSim/Region/Framework/Scenes/Hypergrid') diff --git a/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs b/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs deleted file mode 100644 index fdda150..0000000 --- a/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs +++ /dev/null @@ -1,264 +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 System.Collections.Generic; -using System.Reflection; -using System.Threading; -using log4net; -using OpenMetaverse; -using OpenSim.Framework; - -using OpenSim.Region.Framework.Scenes.Serialization; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Services.Interfaces; - -//using HyperGrid.Framework; -//using OpenSim.Region.Communications.Hypergrid; - -namespace OpenSim.Region.Framework.Scenes.Hypergrid -{ - public class HGAssetMapper - { - #region Fields - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - // This maps between inventory server urls and inventory server clients -// private Dictionary m_inventoryServers = new Dictionary(); - - private Scene m_scene; - - private IHyperAssetService m_hyper; - IHyperAssetService HyperlinkAssets - { - get - { - if (m_hyper == null) - m_hyper = m_scene.RequestModuleInterface(); - return m_hyper; - } - } - - #endregion - - #region Constructor - - public HGAssetMapper(Scene scene) - { - m_scene = scene; - } - - #endregion - - #region Internal functions - -// private string UserAssetURL(UUID userID) -// { -// CachedUserInfo uinfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(userID); -// if (uinfo != null) -// return (uinfo.UserProfile.UserAssetURI == "") ? null : uinfo.UserProfile.UserAssetURI; -// return null; -// } - -// private string UserInventoryURL(UUID userID) -// { -// CachedUserInfo uinfo = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(userID); -// if (uinfo != null) -// return (uinfo.UserProfile.UserInventoryURI == "") ? null : uinfo.UserProfile.UserInventoryURI; -// return null; -// } - - - public AssetBase FetchAsset(string url, UUID assetID) - { - AssetBase asset = m_scene.AssetService.Get(url + "/" + assetID.ToString()); - - if (asset != null) - { - m_log.DebugFormat("[HGScene]: Copied asset {0} from {1} to local asset server. ", asset.ID, url); - return asset; - } - return null; - } - - public bool PostAsset(string url, AssetBase asset) - { - if (asset != null) - { - // See long comment in AssetCache.AddAsset - if (!asset.Temporary || asset.Local) - { - // We need to copy the asset into a new asset, because - // we need to set its ID to be URL+UUID, so that the - // HGAssetService dispatches it to the remote grid. - // It's not pretty, but the best that can be done while - // not having a global naming infrastructure - AssetBase asset1 = new AssetBase(asset.FullID, asset.Name, asset.Type); - Copy(asset, asset1); - try - { - asset1.ID = url + "/" + asset.ID; - } - catch - { - m_log.Warn("[HGScene]: Oops."); - } - - m_scene.AssetService.Store(asset1); - m_log.DebugFormat("[HGScene]: Posted copy of asset {0} from local asset server to {1}", asset1.ID, url); - } - return true; - } - else - m_log.Warn("[HGScene]: Tried to post asset to remote server, but asset not in local cache."); - - return false; - } - - private void Copy(AssetBase from, AssetBase to) - { - to.Data = from.Data; - to.Description = from.Description; - to.FullID = from.FullID; - to.ID = from.ID; - to.Local = from.Local; - to.Name = from.Name; - to.Temporary = from.Temporary; - to.Type = from.Type; - - } - - // TODO: unused - // private void Dump(Dictionary lst) - // { - // m_log.Debug("XXX -------- UUID DUMP ------- XXX"); - // foreach (KeyValuePair kvp in lst) - // m_log.Debug(" >> " + kvp.Key + " (texture? " + kvp.Value + ")"); - // m_log.Debug("XXX -------- UUID DUMP ------- XXX"); - // } - - #endregion - - - #region Public interface - - public void Get(UUID assetID, UUID ownerID) - { - // Get the item from the remote asset server onto the local AssetCache - // and place an entry in m_assetMap - - string userAssetURL = HyperlinkAssets.GetUserAssetServer(ownerID); - if ((userAssetURL != string.Empty) && (userAssetURL != HyperlinkAssets.GetSimAssetServer())) - { - m_log.Debug("[HGScene]: Fetching object " + assetID + " from asset server " + userAssetURL); - AssetBase asset = FetchAsset(userAssetURL, assetID); - - if (asset != null) - { - // OK, now fetch the inside. - Dictionary ids = new Dictionary(); - HGUuidGatherer uuidGatherer = new HGUuidGatherer(this, m_scene.AssetService, userAssetURL); - uuidGatherer.GatherAssetUuids(asset.FullID, (AssetType)asset.Type, ids); - foreach (UUID uuid in ids.Keys) - FetchAsset(userAssetURL, uuid); - - m_log.DebugFormat("[HGScene]: Successfully fetched asset {0} from asset server {1}", asset.ID, userAssetURL); - - } - else - m_log.Warn("[HGScene]: Could not fetch asset from remote asset server " + userAssetURL); - } - else - m_log.Debug("[HGScene]: user's asset server is the local region's asset server"); - } - - //public InventoryItemBase Get(InventoryItemBase item, UUID rootFolder, CachedUserInfo userInfo) - //{ - // InventoryClient invCli = null; - // string inventoryURL = UserInventoryURL(item.Owner); - // if (!m_inventoryServers.TryGetValue(inventoryURL, out invCli)) - // { - // m_log.Debug("[HGScene]: Starting new InventorytClient for " + inventoryURL); - // invCli = new InventoryClient(inventoryURL); - // m_inventoryServers.Add(inventoryURL, invCli); - // } - - // item = invCli.GetInventoryItem(item); - // if (item != null) - // { - // // Change the folder, stick it in root folder, all items flattened out here in this region cache - // item.Folder = rootFolder; - // //userInfo.AddItem(item); don't use this, it calls back to the inventory server - // lock (userInfo.RootFolder.Items) - // { - // userInfo.RootFolder.Items[item.ID] = item; - // } - - // } - // return item; - //} - - public void Post(UUID assetID, UUID ownerID) - { - // Post the item from the local AssetCache onto the remote asset server - // and place an entry in m_assetMap - - string userAssetURL = HyperlinkAssets.GetUserAssetServer(ownerID); - if ((userAssetURL != string.Empty) && (userAssetURL != HyperlinkAssets.GetSimAssetServer())) - { - m_log.Debug("[HGScene]: Posting object " + assetID + " to asset server " + userAssetURL); - AssetBase asset = m_scene.AssetService.Get(assetID.ToString()); - if (asset != null) - { - Dictionary ids = new Dictionary(); - HGUuidGatherer uuidGatherer = new HGUuidGatherer(this, m_scene.AssetService, string.Empty); - uuidGatherer.GatherAssetUuids(asset.FullID, (AssetType)asset.Type, ids); - foreach (UUID uuid in ids.Keys) - { - asset = m_scene.AssetService.Get(uuid.ToString()); - if (asset == null) - m_log.DebugFormat("[HGScene]: Could not find asset {0}", uuid); - else - PostAsset(userAssetURL, asset); - } - - // maybe all pieces got there... - m_log.DebugFormat("[HGScene]: Successfully posted item {0} to asset server {1}", assetID, userAssetURL); - - } - else - m_log.DebugFormat("[HGScene]: Something wrong with asset {0}, it could not be found", assetID); - } - else - m_log.Debug("[HGScene]: user's asset server is local region's asset server"); - - } - - #endregion - - } -} diff --git a/OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs deleted file mode 100644 index c5f8921..0000000 --- a/OpenSim/Region/Framework/Scenes/Hypergrid/HGScene.Inventory.cs +++ /dev/null @@ -1,175 +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.Reflection; -using log4net; -using Nini.Config; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Framework.Communications; - -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Services.Interfaces; - -namespace OpenSim.Region.Framework.Scenes.Hypergrid -{ - public partial class HGScene : Scene - { - #region Fields - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private HGAssetMapper m_assMapper; - public HGAssetMapper AssetMapper - { - get { return m_assMapper; } - } - - private IHyperAssetService m_hyper; - private IHyperAssetService HyperAssets - { - get - { - if (m_hyper == null) - m_hyper = RequestModuleInterface(); - return m_hyper; - } - } - - #endregion - - #region Constructors - - public HGScene(RegionInfo regInfo, AgentCircuitManager authen, - SceneCommunicationService sceneGridService, - StorageManager storeManager, - ModuleLoader moduleLoader, bool dumpAssetsToFile, bool physicalPrim, - bool SeeIntoRegionFromNeighbor, IConfigSource config, string simulatorVersion) - : base(regInfo, authen, sceneGridService, storeManager, moduleLoader, - dumpAssetsToFile, physicalPrim, SeeIntoRegionFromNeighbor, config, simulatorVersion) - { - m_log.Info("[HGScene]: Starting HGScene."); - m_assMapper = new HGAssetMapper(this); - - EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem; - } - - #endregion - - #region Event handlers - - public void UploadInventoryItem(UUID avatarID, UUID assetID, string name, int userlevel) - { - UserAccount userInfo = UserAccountService.GetUserAccount(RegionInfo.ScopeID, avatarID); - if (userInfo != null) - { - m_assMapper.Post(assetID, avatarID); - } - } - - #endregion - - #region Overrides of Scene.Inventory methods - - /// - /// CapsUpdateInventoryItemAsset - /// - public override UUID CapsUpdateInventoryItemAsset(IClientAPI remoteClient, UUID itemID, byte[] data) - { - UUID newAssetID = base.CapsUpdateInventoryItemAsset(remoteClient, itemID, data); - - UploadInventoryItem(remoteClient.AgentId, newAssetID, "", 0); - - return newAssetID; - } - - /// - /// DeleteToInventory - /// - public override UUID DeleteToInventory(DeRezAction action, UUID folderID, SceneObjectGroup objectGroup, IClientAPI remoteClient) - { - UUID assetID = base.DeleteToInventory(action, folderID, objectGroup, remoteClient); - - if (!assetID.Equals(UUID.Zero)) - { - UploadInventoryItem(remoteClient.AgentId, assetID, "", 0); - } - else - m_log.Debug("[HGScene]: Scene.Inventory did not create asset"); - - return assetID; - } - - /// - /// RezObject - /// - public override SceneObjectGroup RezObject(IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart, - UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, - bool RezSelected, bool RemoveItem, UUID fromTaskID, bool attachment) - { - m_log.DebugFormat("[HGScene] RezObject itemID={0} fromTaskID={1}", itemID, fromTaskID); - - //if (fromTaskID.Equals(UUID.Zero)) - //{ - InventoryItemBase item = new InventoryItemBase(itemID); - item.Owner = remoteClient.AgentId; - item = InventoryService.GetItem(item); - //if (item == null) - //{ // Fetch the item - // item = new InventoryItemBase(); - // item.Owner = remoteClient.AgentId; - // item.ID = itemID; - // item = m_assMapper.Get(item, userInfo.RootFolder.ID, userInfo); - //} - if (item != null) - { - m_assMapper.Get(item.AssetID, remoteClient.AgentId); - - } - //} - - // OK, we're done fetching. Pass it up to the default RezObject - return base.RezObject(remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection, - RezSelected, RemoveItem, fromTaskID, attachment); - - } - - protected override void TransferInventoryAssets(InventoryItemBase item, UUID sender, UUID receiver) - { - string userAssetServer = HyperAssets.GetUserAssetServer(sender); - if ((userAssetServer != string.Empty) && (userAssetServer != HyperAssets.GetSimAssetServer())) - m_assMapper.Get(item.AssetID, sender); - - userAssetServer = HyperAssets.GetUserAssetServer(receiver); - if ((userAssetServer != string.Empty) && (userAssetServer != HyperAssets.GetSimAssetServer())) - m_assMapper.Post(item.AssetID, receiver); - } - - #endregion - - } - -} diff --git a/OpenSim/Region/Framework/Scenes/Hypergrid/HGUuidGatherer.cs b/OpenSim/Region/Framework/Scenes/Hypergrid/HGUuidGatherer.cs deleted file mode 100644 index 5d4e7ac..0000000 --- a/OpenSim/Region/Framework/Scenes/Hypergrid/HGUuidGatherer.cs +++ /dev/null @@ -1,56 +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 System.Collections.Generic; - -using OpenSim.Framework; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Region.Framework.Scenes.Hypergrid -{ - public class HGUuidGatherer : UuidGatherer - { - protected string m_assetServerURL; - protected HGAssetMapper m_assetMapper; - - public HGUuidGatherer(HGAssetMapper assMap, IAssetService assetCache, string assetServerURL) : base(assetCache) - { - m_assetMapper = assMap; - m_assetServerURL = assetServerURL; - } - - protected override AssetBase GetAsset(UUID uuid) - { - if (string.Empty == m_assetServerURL) - return m_assetCache.Get(uuid.ToString()); - else - return m_assetMapper.FetchAsset(m_assetServerURL, uuid); - } - } -} -- cgit v1.1