make FetchInventory2 a shared module

master
UbitUmarov 2020-04-28 01:39:10 +01:00
parent 7e2ed9ee2b
commit dee822208a
1 changed files with 22 additions and 14 deletions

View File

@ -42,16 +42,16 @@ namespace OpenSim.Region.ClientStack.Linden
/// This module implements both WebFetchInventoryDescendents and FetchInventoryDescendents2 capabilities. /// This module implements both WebFetchInventoryDescendents and FetchInventoryDescendents2 capabilities.
/// </summary> /// </summary>
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "FetchInventory2Module")] [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "FetchInventory2Module")]
public class FetchInventory2Module : INonSharedRegionModule public class FetchInventory2Module : ISharedRegionModule
{ {
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public bool Enabled { get; private set; } public bool Enabled { get; private set; }
private Scene m_scene; private int m_nScenes;
private IInventoryService m_inventoryService; private IInventoryService m_inventoryService = null;
private ILibraryService m_LibraryService; private ILibraryService m_LibraryService = null;
private string m_fetchInventory2Url; private string m_fetchInventory2Url;
#region ISharedRegionModule Members #region ISharedRegionModule Members
@ -70,10 +70,6 @@ namespace OpenSim.Region.ClientStack.Linden
public void AddRegion(Scene s) public void AddRegion(Scene s)
{ {
if (!Enabled)
return;
m_scene = s;
} }
public void RemoveRegion(Scene s) public void RemoveRegion(Scene s)
@ -81,8 +77,13 @@ namespace OpenSim.Region.ClientStack.Linden
if (!Enabled) if (!Enabled)
return; return;
m_scene.EventManager.OnRegisterCaps -= RegisterCaps; s.EventManager.OnRegisterCaps -= RegisterCaps;
m_scene = null; --m_nScenes;
if(m_nScenes <= 0)
{
m_inventoryService = null;
m_LibraryService = null;
}
} }
public void RegionLoaded(Scene s) public void RegionLoaded(Scene s)
@ -90,9 +91,16 @@ namespace OpenSim.Region.ClientStack.Linden
if (!Enabled) if (!Enabled)
return; return;
m_inventoryService = m_scene.InventoryService; if (m_inventoryService == null)
m_LibraryService = m_scene.LibraryService; m_inventoryService = s.InventoryService;
m_scene.EventManager.OnRegisterCaps += RegisterCaps; if(m_LibraryService == null)
m_LibraryService = s.LibraryService;
if (m_inventoryService != null)
{
s.EventManager.OnRegisterCaps += RegisterCaps;
++m_nScenes;
}
} }
public void PostInitialise() {} public void PostInitialise() {}
@ -116,7 +124,7 @@ namespace OpenSim.Region.ClientStack.Linden
caps.RegisterSimpleHandler("FetchInventory2", caps.RegisterSimpleHandler("FetchInventory2",
new SimpleOSDMapHandler("POST", "/" + UUID.Random(), fetchHandler.FetchInventorySimpleRequest)); new SimpleOSDMapHandler("POST", "/" + UUID.Random(), fetchHandler.FetchInventorySimpleRequest));
} }
else if(!string.IsNullOrWhiteSpace(m_fetchInventory2Url)) else
{ {
caps.RegisterHandler("FetchInventory2", m_fetchInventory2Url); caps.RegisterHandler("FetchInventory2", m_fetchInventory2Url);
} }