From 98ab3dffa35a007986a43fd15b9ce93202c92ef5 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 29 Dec 2011 15:33:04 -0800 Subject: [PATCH] Deleted two obsolete files in Inventory modules. --- .../Inventory/BaseInventoryConnector.cs | 223 ---------------- .../Inventory/InventoryCache.cs | 237 ------------------ 2 files changed, 460 deletions(-) delete mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs delete mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs deleted file mode 100644 index dcf08e3d80..0000000000 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs +++ /dev/null @@ -1,223 +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 OpenMetaverse; -using Nini.Config; -using log4net; -using OpenSim.Framework; -using OpenSim.Services.Interfaces; - -namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory -{ - public abstract class BaseInventoryConnector : IInventoryService - { - protected static InventoryCache m_cache; - private static bool m_Initialized; - - protected virtual void Init(IConfigSource source) - { - if (!m_Initialized) - { - m_cache = new InventoryCache(); - m_cache.Init(source, this); - m_Initialized = true; - } - } - - /// - /// Create the entire inventory for a given user - /// - /// - /// - public abstract bool CreateUserInventory(UUID user); - - /// - /// Gets the skeleton of the inventory -- folders only - /// - /// - /// - public abstract List GetInventorySkeleton(UUID userId); - - /// - /// Synchronous inventory fetch. - /// - /// - /// - public abstract InventoryCollection GetUserInventory(UUID userID); - - /// - /// Request the inventory for a user. This is an asynchronous operation that will call the callback when the - /// inventory has been received - /// - /// - /// - public abstract void GetUserInventory(UUID userID, InventoryReceiptCallback callback); - - /// - /// Retrieve the root inventory folder for the given user. - /// - /// - /// null if no root folder was found - public InventoryFolderBase GetRootFolder(UUID userID) - { - // Root folder is here as system type Folder. - return m_cache.GetFolderForType(userID, AssetType.Folder); - } - - public abstract Dictionary GetSystemFolders(UUID userID); - - /// - /// Gets the user folder for the given folder-type - /// - /// - /// - /// - public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) - { - return m_cache.GetFolderForType(userID, type); - } - - /// - /// Gets everything (folders and items) inside a folder - /// - /// - /// - /// - public abstract InventoryCollection GetFolderContent(UUID userID, UUID folderID); - - /// - /// Gets the items inside a folder - /// - /// - /// - /// - public abstract List GetFolderItems(UUID userID, UUID folderID); - - /// - /// Add a new folder to the user's inventory - /// - /// - /// true if the folder was successfully added - public abstract bool AddFolder(InventoryFolderBase folder); - - /// - /// Update a folder in the user's inventory - /// - /// - /// true if the folder was successfully updated - public abstract bool UpdateFolder(InventoryFolderBase folder); - - /// - /// Move an inventory folder to a new location - /// - /// A folder containing the details of the new location - /// true if the folder was successfully moved - public abstract bool MoveFolder(InventoryFolderBase folder); - - /// - /// Delete a list of inventory folders (from trash) - /// - public abstract bool DeleteFolders(UUID ownerID, List folderIDs); - - /// - /// Purge an inventory folder of all its items and subfolders. - /// - /// - /// true if the folder was successfully purged - public abstract bool PurgeFolder(InventoryFolderBase folder); - - /// - /// Add a new item to the user's inventory. - /// If the given item has to parent folder, it tries to find the most - /// suitable folder for it. - /// - /// - /// true if the item was successfully added - public bool AddItem(InventoryItemBase item) - { - if (item == null) - return false; - - if (item.Folder == UUID.Zero) - { - InventoryFolderBase f = GetFolderForType(item.Owner, (AssetType)item.AssetType); - if (f != null) - item.Folder = f.ID; - else - { - f = GetRootFolder(item.Owner); - if (f != null) - item.Folder = f.ID; - else - return false; - } - } - - return AddItemPlain(item); - } - - protected abstract bool AddItemPlain(InventoryItemBase item); - - /// - /// Update an item in the user's inventory - /// - /// - /// true if the item was successfully updated - public abstract bool UpdateItem(InventoryItemBase item); - - public abstract bool MoveItems(UUID ownerID, List items); - - /// - /// Delete an item from the user's inventory - /// - /// - /// true if the item was successfully deleted - public abstract bool DeleteItems(UUID ownerID, List itemIDs); - - public abstract InventoryItemBase GetItem(InventoryItemBase item); - - public abstract InventoryFolderBase GetFolder(InventoryFolderBase folder); - - /// - /// Does the given user have an inventory structure? - /// - /// - /// - public abstract bool HasInventoryForUser(UUID userID); - - /// - /// Get the active gestures of the agent. - /// - /// - /// - public abstract List GetActiveGestures(UUID userId); - - public abstract int GetAssetPermissions(UUID userID, UUID assetID); - } -} diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs deleted file mode 100644 index 2322d7cb45..0000000000 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs +++ /dev/null @@ -1,237 +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 OpenSim.Framework; -using OpenSim.Framework.Client; -using OpenSim.Region.Framework.Scenes; - -using OpenMetaverse; -using Nini.Config; -using log4net; - -namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory -{ - public class InventoryCache - { - private static readonly ILog m_log = - LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); - - protected BaseInventoryConnector m_Connector; - protected List m_Scenes; - - // The cache proper - protected Dictionary> m_InventoryCache; - - // A cache of userIDs --> ServiceURLs, for HGBroker only - protected Dictionary m_InventoryURLs = - new Dictionary(); - - public virtual void Init(IConfigSource source, BaseInventoryConnector connector) - { - m_Scenes = new List(); - m_InventoryCache = new Dictionary>(); - m_Connector = connector; - } - - public virtual void AddRegion(Scene scene) - { - m_Scenes.Add(scene); - scene.EventManager.OnMakeRootAgent += OnMakeRootAgent; - scene.EventManager.OnClientClosed += OnClientClosed; - } - - public virtual void RemoveRegion(Scene scene) - { - if ((m_Scenes != null) && m_Scenes.Contains(scene)) - { - m_Scenes.Remove(scene); - } - } - - void OnMakeRootAgent(ScenePresence presence) - { - // Get system folders - - // First check if they're here already - lock (m_InventoryCache) - { - if (m_InventoryCache.ContainsKey(presence.UUID)) - { - m_log.DebugFormat("[INVENTORY CACHE]: OnMakeRootAgent, system folders for {0} {1} already in cache", presence.Firstname, presence.Lastname); - return; - } - } - - // If not, go get them and place them in the cache - Dictionary folders = CacheSystemFolders(presence.UUID); - CacheInventoryServiceURL(presence.Scene, presence.UUID); - - m_log.DebugFormat("[INVENTORY CACHE]: OnMakeRootAgent in {0}, fetched system folders for {1} {2}: count {3}", - presence.Scene.RegionInfo.RegionName, presence.Firstname, presence.Lastname, folders.Count); - - } - - void OnClientClosed(UUID clientID, Scene scene) - { - if (m_InventoryCache.ContainsKey(clientID)) // if it's still in cache - { - ScenePresence sp = null; - foreach (Scene s in m_Scenes) - { - s.TryGetScenePresence(clientID, out sp); - if ((sp != null) && !sp.IsChildAgent && (s != scene)) - { - m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, but user {1} still in sim. Keeping system folders in cache", - scene.RegionInfo.RegionName, clientID); - return; - } - } - - m_log.DebugFormat( - "[INVENTORY CACHE]: OnClientClosed in {0}, user {1} out of sim. Dropping system folders", - scene.RegionInfo.RegionName, clientID); - DropCachedSystemFolders(clientID); - DropInventoryServiceURL(clientID); - } - } - - /// - /// Cache a user's 'system' folders. - /// - /// - /// Folders cached - protected Dictionary CacheSystemFolders(UUID userID) - { - // If not, go get them and place them in the cache - Dictionary folders = m_Connector.GetSystemFolders(userID); - - if (folders.Count > 0) - lock (m_InventoryCache) - m_InventoryCache.Add(userID, folders); - - return folders; - } - - /// - /// Drop a user's cached 'system' folders - /// - /// - protected void DropCachedSystemFolders(UUID userID) - { - // Drop system folders - lock (m_InventoryCache) - if (m_InventoryCache.ContainsKey(userID)) - m_InventoryCache.Remove(userID); - } - - /// - /// Get the system folder for a particular asset type - /// - /// - /// - /// - public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) - { - m_log.DebugFormat("[INVENTORY CACHE]: Getting folder for asset type {0} for user {1}", type, userID); - - Dictionary folders = null; - - lock (m_InventoryCache) - { - m_InventoryCache.TryGetValue(userID, out folders); - - // In some situations (such as non-secured standalones), system folders can be requested without - // the user being logged in. So we need to try caching them here if we don't already have them. - if (null == folders) - CacheSystemFolders(userID); - - m_InventoryCache.TryGetValue(userID, out folders); - } - - if ((folders != null) && folders.ContainsKey(type)) - { - m_log.DebugFormat( - "[INVENTORY CACHE]: Returning folder {0} as type {1} for {2}", folders[type], type, userID); - - return folders[type]; - } - - m_log.WarnFormat("[INVENTORY CACHE]: Could not find folder for system type {0} for {1}", type, userID); - - return null; - } - - /// - /// Gets the user's inventory URL from its serviceURLs, if the user is foreign, - /// and sticks it in the cache - /// - /// - private void CacheInventoryServiceURL(Scene scene, UUID userID) - { - if (scene.UserAccountService.GetUserAccount(scene.RegionInfo.ScopeID, userID) == null) - { - // The user does not have a local account; let's cache its service URL - string inventoryURL = string.Empty; - ScenePresence sp = null; - scene.TryGetScenePresence(userID, out sp); - if (sp != null) - { - AgentCircuitData aCircuit = scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); - if (aCircuit.ServiceURLs.ContainsKey("InventoryServerURI")) - { - inventoryURL = aCircuit.ServiceURLs["InventoryServerURI"].ToString(); - if (inventoryURL != null && inventoryURL != string.Empty) - { - inventoryURL = inventoryURL.Trim(new char[] { '/' }); - m_InventoryURLs.Add(userID, inventoryURL); - } - } - } - } - } - - private void DropInventoryServiceURL(UUID userID) - { - lock (m_InventoryURLs) - if (m_InventoryURLs.ContainsKey(userID)) - m_InventoryURLs.Remove(userID); - } - - public string GetInventoryServiceURL(UUID userID) - { - if (m_InventoryURLs.ContainsKey(userID)) - return m_InventoryURLs[userID]; - - return null; - } - } -}