From 31419a70ce05e7db0c54f4c4ec827a0d1fe23402 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 11 Aug 2009 10:30:03 -0700 Subject: System folders inventory cache added to OUT inventory modules. This tracks agents in and out of *sims* in order to fetch/drop their system folders from the cache. Also added region-side support for fetching the system folders from the inventory service. Nothing of this is called yet. --- .../Inventory/LocalInventoryServiceConnector.cs | 35 ++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs') diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs index bab0044..5c52897f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs @@ -41,7 +41,7 @@ using OpenMetaverse; namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory { - public class LocalInventoryServicesConnector : ISharedRegionModule, IInventoryService + public class LocalInventoryServicesConnector : InventoryCache, ISharedRegionModule, IInventoryService { private static readonly ILog m_log = LogManager.GetLogger( @@ -108,6 +108,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory // m_InventoryService.AddPlugin(new OspInventoryWrapperPlugin(plugin, this)); //} + Init(source); + m_Enabled = true; m_log.Info("[INVENTORY CONNECTOR]: Local inventory connector enabled"); } @@ -122,7 +124,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory { } - public void AddRegion(Scene scene) + public override void AddRegion(Scene scene) { if (!m_Enabled) return; @@ -139,10 +141,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory // "[INVENTORY CONNECTOR]: Registering IInventoryService to scene {0}", scene.RegionInfo.RegionName); scene.RegisterModuleInterface(this); + base.AddRegion(scene); } - public void RemoveRegion(Scene scene) + public override void RemoveRegion(Scene scene) { + base.RemoveRegion(scene); } public void RegionLoaded(Scene scene) @@ -176,9 +180,30 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory m_InventoryService.GetUserInventory(userID, callback); } - public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) + // Inherited. See base + //public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) + //{ + // return m_InventoryService.GetFolderForType(userID, type); + //} + + public override Dictionary GetSystemFolders(UUID userID) { - return m_InventoryService.GetFolderForType(userID, type); + InventoryFolderBase root = GetRootFolder(userID); + if (root != null) + { + InventoryCollection content = GetFolderContent(userID, root.ID); + if (content != null) + { + Dictionary folders = new Dictionary(); + foreach (InventoryFolderBase folder in content.Folders) + { + if (folder.Type != (short)AssetType.Folder) + folders[(AssetType)folder.Type] = folder; + } + return folders; + } + } + return new Dictionary(); } public InventoryCollection GetFolderContent(UUID userID, UUID folderID) -- cgit v1.1