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/HGInventoryBroker.cs | 68 ++++++++++++++++++---- 1 file changed, 56 insertions(+), 12 deletions(-) (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs') diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index f5e6824..1562172 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs @@ -41,7 +41,7 @@ using OpenMetaverse; namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory { - public class HGInventoryBroker : ISharedRegionModule, IInventoryService + public class HGInventoryBroker : InventoryCache, ISharedRegionModule, IInventoryService { private static readonly ILog m_log = LogManager.GetLogger( @@ -122,6 +122,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory m_LocalGridInventoryURI = inventoryConfig.GetString("InventoryServerURI", string.Empty); + Init(source); + m_Enabled = true; m_log.Info("[HG INVENTORY CONNECTOR]: HG inventory broker enabled"); } @@ -136,7 +138,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory { } - public void AddRegion(Scene scene) + public override void AddRegion(Scene scene) { if (!m_Enabled) return; @@ -154,10 +156,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory } 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) @@ -165,7 +169,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory if (!m_Enabled) return; - m_log.InfoFormat("[INVENTORY CONNECTOR]: Enabled HG inventory for region {0}", scene.RegionInfo.RegionName); + m_log.InfoFormat("[HG INVENTORY CONNECTOR]: Enabled HG inventory for region {0}", scene.RegionInfo.RegionName); } @@ -201,32 +205,72 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory } } - public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) + // Inherited. See base + //public override InventoryFolderBase GetFolderForType(UUID userID, AssetType type) + //{ + // if (IsLocalGridUser(userID)) + // return m_GridService.GetFolderForType(userID, type); + // else + // { + // UUID sessionID = GetSessionID(userID); + // string uri = GetUserInventoryURI(userID) + "/" + userID.ToString(); + // // !!!!!! + // return null; + // //return m_HGService.GetFolderForType(uri, sessionID, type); + // } + //} + + public InventoryCollection GetFolderContent(UUID userID, UUID folderID) { if (IsLocalGridUser(userID)) - return m_GridService.GetFolderForType(userID, type); + return m_GridService.GetFolderContent(userID, folderID); else { UUID sessionID = GetSessionID(userID); string uri = GetUserInventoryURI(userID) + "/" + userID.ToString(); - // !!!!!! - return null; - //return m_HGService.GetFolderForType(uri, sessionID, type); + return m_HGService.GetFolderContent(uri, folderID, sessionID); } } - public InventoryCollection GetFolderContent(UUID userID, UUID folderID) + public override Dictionary GetSystemFolders(UUID userID) { if (IsLocalGridUser(userID)) - return m_GridService.GetFolderContent(userID, folderID); + return GetSystemFoldersLocal(userID); else { UUID sessionID = GetSessionID(userID); string uri = GetUserInventoryURI(userID) + "/" + userID.ToString(); - return m_HGService.GetFolderContent(uri, folderID, sessionID); + return m_HGService.GetSystemFolders(uri, sessionID); } } + private Dictionary GetSystemFoldersLocal(UUID userID) + { + InventoryFolderBase root = m_GridService.GetRootFolder(userID); + if (root != null) + { + InventoryCollection content = m_GridService.GetFolderContent(userID, root.ID); + if (content != null) + { + Dictionary folders = new Dictionary(); + m_log.DebugFormat("[HG INVENTORY CONNECTOR]: System folders count for {0}: {1}", userID, folders.Count); + foreach (InventoryFolderBase folder in content.Folders) + { + m_log.DebugFormat("[HG INVENTORY CONNECTOR]: scanning folder type {0}", (AssetType)folder.Type); + if (folder.Type != (short)AssetType.Folder) + folders[(AssetType)folder.Type] = folder; + } + return folders; + } + m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Root folder content not found for {0}", userID); + + } + + m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Root folder not found for {0}", userID); + + return new Dictionary(); + } + public List GetFolderItems(UUID userID, UUID folderID) { return new List(); -- cgit v1.1