From 0f367bd7bbc5d22d4834e1eb0f1671381485143e Mon Sep 17 00:00:00 2001 From: diva Date: Wed, 10 Jun 2009 13:18:32 +0000 Subject: Heart surgery no.2: the inventory service hooks. Several improvements in the connectors themselves. Several improvements in configurations. Needed to add a hack in IUserService and UserManagerBase, to be removed when that service is refactored. --- .../Inventory/HGInventoryBroker.cs | 40 ++++++++++++---------- .../Inventory/LocalInventoryServiceConnector.cs | 33 ++++++++++++------ .../Inventory/RemoteInventoryServiceConnector.cs | 16 ++++++--- 3 files changed, 56 insertions(+), 33 deletions(-) (limited to 'OpenSim/Region/CoreModules/ServiceConnectors') diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/HGInventoryBroker.cs index 3a0011f..03b4873 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/HGInventoryBroker.cs @@ -84,13 +84,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory if (localDll == String.Empty) { m_log.Error("[HG INVENTORY CONNECTOR]: No LocalGridInventoryService named in section InventoryService"); - return; + //return; + throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's"); } if (HGDll == String.Empty) { m_log.Error("[HG INVENTORY CONNECTOR]: No HypergridInventoryService named in section InventoryService"); - return; + //return; + throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's"); } Object[] args = new Object[] { source }; @@ -116,7 +118,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory m_LocalGridInventoryURI = inventoryConfig.GetString("InventoryServerURI", string.Empty); m_Enabled = true; - m_log.Info("[HG INVENTORY CONNECTOR]: HG asset broker enabled"); + m_log.Info("[HG INVENTORY CONNECTOR]: HG inventory broker enabled"); } } } @@ -139,6 +141,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory m_Scene = scene; // HACK for now. Ugh! m_UserProfileService = m_Scene.CommsManager.UserProfileCacheService; + // ugh! + m_UserProfileService.SetInventoryService(this); + scene.CommsManager.UserService.SetInventoryService(this); + + m_Initialized = true; } scene.RegisterModuleInterface(this); @@ -153,7 +160,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory if (!m_Enabled) return; - m_log.InfoFormat("[INVENTORY CONNECTOR]: Enabled remote inventory for region {0}", scene.RegionInfo.RegionName); + m_log.InfoFormat("[INVENTORY CONNECTOR]: Enabled HG inventory for region {0}", scene.RegionInfo.RegionName); } @@ -161,10 +168,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory public bool CreateUserInventory(UUID userID) { - if (IsLocalGridUser(userID)) - return m_GridService.CreateUserInventory(userID); - else - return false; + return m_GridService.CreateUserInventory(userID); } public List GetInventorySkeleton(UUID userId) @@ -187,7 +191,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(userID); - string uri = "http://" + GetUserInventoryURI(userID) + "/" + userID.ToString(); + string uri = GetUserInventoryURI(userID) + "/" + userID.ToString(); m_HGService.GetUserInventory(uri, sessionID, callback); } } @@ -207,7 +211,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(folder.Owner); - string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); + string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); return m_HGService.AddFolder(uri, folder, sessionID); } } @@ -222,7 +226,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(folder.Owner); - string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); + string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); return m_HGService.UpdateFolder(uri, folder, sessionID); } } @@ -237,7 +241,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(folder.Owner); - string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); + string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); return m_HGService.MoveFolder(uri, folder, sessionID); } } @@ -252,7 +256,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(folder.Owner); - string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); + string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); return m_HGService.PurgeFolder(uri, folder, sessionID); } } @@ -267,7 +271,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(item.Owner); - string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); + string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); return m_HGService.AddItem(uri, item, sessionID); } } @@ -282,7 +286,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(item.Owner); - string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); + string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); return m_HGService.UpdateItem(uri, item, sessionID); } } @@ -297,7 +301,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(item.Owner); - string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); + string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); return m_HGService.DeleteItem(uri, item, sessionID); } } @@ -312,7 +316,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(item.Owner); - string uri = "http://" + GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); + string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); return m_HGService.QueryItem(uri, item, sessionID); } } @@ -327,7 +331,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory else { UUID sessionID = GetSessionID(folder.Owner); - string uri = "http://" + GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); + string uri = GetUserInventoryURI(folder.Owner) + "/" + folder.Owner.ToString(); return m_HGService.QueryFolder(uri, folder, sessionID); } } diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/LocalInventoryServiceConnector.cs index 6b72e9b..ce64d4d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/LocalInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/LocalInventoryServiceConnector.cs @@ -27,6 +27,7 @@ using log4net; using Nini.Config; + using System; using System.Collections.Generic; using System.Reflection; @@ -38,10 +39,10 @@ using OpenSim.Region.Framework.Scenes; using OpenSim.Services.Interfaces; using OpenMetaverse; + namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory { - public class LocalInventoryServicesConnector : - ISharedRegionModule, IInventoryService + public class LocalInventoryServicesConnector : ISharedRegionModule, IInventoryService { private static readonly ILog m_log = LogManager.GetLogger( @@ -50,6 +51,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory private IInventoryService m_InventoryService; private bool m_Enabled = false; + private bool m_Initialized = false; public string Name { @@ -64,15 +66,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory string name = moduleConfig.GetString("InventoryServices", ""); if (name == Name) { - IConfig assetConfig = source.Configs["InventoryService"]; - if (assetConfig == null) + IConfig inventoryConfig = source.Configs["InventoryService"]; + if (inventoryConfig == null) { m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini"); return; } - string serviceDll = assetConfig.GetString("LocalServiceModule", - String.Empty); + string serviceDll = inventoryConfig.GetString("LocalServiceModule", String.Empty); if (serviceDll == String.Empty) { @@ -81,14 +82,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory } Object[] args = new Object[] { source }; - m_InventoryService = - ServerUtils.LoadPlugin(serviceDll, - args); + m_log.DebugFormat("[INVENTORY CONNECTOR]: Service dll = {0}", serviceDll); + + m_InventoryService = ServerUtils.LoadPlugin(serviceDll, args); if (m_InventoryService == null) { - m_log.Error("[INVENTORY CONNECTOR]: Can't load asset service"); - return; + m_log.Error("[INVENTORY CONNECTOR]: Can't load inventory service"); + //return; + throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's"); } //List plugins @@ -121,7 +123,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory if (!m_Enabled) return; + if (!m_Initialized) + { + // ugh! + scene.CommsManager.UserProfileCacheService.SetInventoryService(this); + scene.CommsManager.UserService.SetInventoryService(this); + m_Initialized = true; + } + scene.RegisterModuleInterface(this); + } public void RemoveRegion(Scene scene) diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/RemoteInventoryServiceConnector.cs index b695fce..cd13c3d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/RemoteInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectors/Inventory/RemoteInventoryServiceConnector.cs @@ -40,12 +40,10 @@ using OpenMetaverse; namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory { - public class RemoteInventoryServicesConnector : - ISharedRegionModule, IInventoryService + public class RemoteInventoryServicesConnector : ISharedRegionModule, IInventoryService { private static readonly ILog m_log = - LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); + LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private bool m_Enabled = false; private bool m_Initialized = false; @@ -57,6 +55,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory get { return "RemoteInventoryServicesConnector"; } } + public RemoteInventoryServicesConnector() + { + } + public RemoteInventoryServicesConnector(IConfigSource source) { Init(source); @@ -100,7 +102,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Inventory return; if (!m_Initialized) + { m_Scene = scene; + // ugh! + scene.CommsManager.UserProfileCacheService.SetInventoryService(this); + scene.CommsManager.UserService.SetInventoryService(this); + m_Initialized = true; + } scene.RegisterModuleInterface(this); } -- cgit v1.1