From 5e4d6cab00cb29cd088ab7b62ab13aff103b64cb Mon Sep 17 00:00:00 2001
From: onefang
Date: Sun, 19 May 2019 21:24:15 +1000
Subject: Dump OpenSim 0.9.0.1 into it's own branch.
---
.../Inventory/HGInventoryBroker.cs | 70 ++++++++++++----------
.../Inventory/InventoryCache.cs | 13 +++-
.../Inventory/LocalInventoryServiceConnector.cs | 18 +++---
.../Inventory/RemoteXInventoryServiceConnector.cs | 16 ++---
4 files changed, 64 insertions(+), 53 deletions(-)
(limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory')
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 48f228a..7a4f981 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -86,7 +86,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
}
}
- public Type ReplaceableInterface
+ public Type ReplaceableInterface
{
get { return null; }
}
@@ -203,21 +203,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
void OnClientClosed(UUID clientID, Scene scene)
{
- if (m_InventoryURLs.ContainsKey(clientID)) // if it's in cache
+ ScenePresence sp = null;
+ foreach (Scene s in m_Scenes)
{
- ScenePresence sp = null;
- foreach (Scene s in m_Scenes)
+ s.TryGetScenePresence(clientID, out sp);
+ if ((sp != null) && !sp.IsChildAgent && (s != scene))
{
- 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 inventoryURL in cache",
+ m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, but user {1} still in sim. Keeping inventoryURL in cache",
scene.RegionInfo.RegionName, clientID);
return;
- }
}
- DropInventoryServiceURL(clientID);
}
+
+ if (m_InventoryURLs.ContainsKey(clientID)) // if it's in cache
+ DropInventoryServiceURL(clientID);
+
+ m_Cache.RemoveAll(clientID);
}
///
@@ -249,7 +250,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
if (inventoryURL != null && inventoryURL != string.Empty)
{
inventoryURL = inventoryURL.Trim(new char[] { '/' });
- m_InventoryURLs[userID] = inventoryURL;
+ lock (m_InventoryURLs)
+ m_InventoryURLs[userID] = inventoryURL;
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Added {0} to the cache of inventory URLs", inventoryURL);
return;
}
@@ -267,38 +269,45 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
if (!string.IsNullOrEmpty(inventoryURL))
{
inventoryURL = inventoryURL.Trim(new char[] { '/' });
- m_InventoryURLs.Add(userID, inventoryURL);
+ lock (m_InventoryURLs)
+ m_InventoryURLs[userID] = inventoryURL;
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Added {0} to the cache of inventory URLs", inventoryURL);
}
-
}
-
}
}
private void DropInventoryServiceURL(UUID userID)
{
lock (m_InventoryURLs)
+ {
if (m_InventoryURLs.ContainsKey(userID))
{
string url = m_InventoryURLs[userID];
m_InventoryURLs.Remove(userID);
m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Removed {0} from the cache of inventory URLs", url);
}
+ }
}
public string GetInventoryServiceURL(UUID userID)
{
- if (m_InventoryURLs.ContainsKey(userID))
- return m_InventoryURLs[userID];
+ lock (m_InventoryURLs)
+ {
+ if (m_InventoryURLs.ContainsKey(userID))
+ return m_InventoryURLs[userID];
+ }
CacheInventoryServiceURL(userID);
- if (m_InventoryURLs.ContainsKey(userID))
- return m_InventoryURLs[userID];
+ lock (m_InventoryURLs)
+ {
+ if (m_InventoryURLs.ContainsKey(userID))
+ return m_InventoryURLs[userID];
+ }
return null; //it means that the methods should forward to local grid's inventory
-
+
}
#endregion
@@ -598,21 +607,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return connector.DeleteItems(ownerID, itemIDs);
}
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
- if (item == null)
- return null;
//m_log.Debug("[HG INVENTORY CONNECTOR]: GetItem " + item.ID);
- string invURL = GetInventoryServiceURL(item.Owner);
+ string invURL = GetInventoryServiceURL(principalID);
if (invURL == null) // not there, forward to local inventory connector to resolve
lock (m_Lock)
- return m_LocalGridInventoryService.GetItem(item);
+ return m_LocalGridInventoryService.GetItem(principalID, itemID);
IInventoryService connector = GetConnector(invURL);
- return connector.GetItem(item);
+ return connector.GetItem(principalID, itemID);
}
public InventoryItemBase[] GetMultipleItems(UUID userID, UUID[] itemIDs)
@@ -632,22 +639,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return connector.GetMultipleItems(userID, itemIDs);
}
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
- if (folder == null)
- return null;
-
//m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolder " + folder.ID);
- string invURL = GetInventoryServiceURL(folder.Owner);
+ string invURL = GetInventoryServiceURL(principalID);
if (invURL == null) // not there, forward to local inventory connector to resolve
lock (m_Lock)
- return m_LocalGridInventoryService.GetFolder(folder);
+ return m_LocalGridInventoryService.GetFolder(principalID, folderID);
IInventoryService connector = GetConnector(invURL);
- return connector.GetFolder(folder);
+ return connector.GetFolder(principalID, folderID);
}
public bool HasInventoryForUser(UUID userID)
@@ -710,4 +714,4 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return connector;
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
index 3195e6b..f7ef2ea 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
@@ -38,12 +38,23 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
///
public class InventoryCache
{
- private const double CACHE_EXPIRATION_SECONDS = 3600.0; // 1 hour
+ private const double CACHE_EXPIRATION_SECONDS = 60.0; // 1 minute
private static ExpiringCache m_RootFolders = new ExpiringCache();
private static ExpiringCache> m_FolderTypes = new ExpiringCache>();
private static ExpiringCache m_Inventories = new ExpiringCache();
+
+ public void RemoveAll(UUID userID)
+ {
+ if(m_RootFolders.Contains(userID))
+ m_RootFolders.Remove(userID);
+ if(m_FolderTypes.Contains(userID))
+ m_FolderTypes.Remove(userID);
+ if(m_Inventories.Contains(userID))
+ m_Inventories.Remove(userID);
+ }
+
public void Cache(UUID userID, InventoryFolderBase root)
{
m_RootFolders.AddOrUpdate(userID, root, CACHE_EXPIRATION_SECONDS);
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
index 20d4e02..fa36b66 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
@@ -72,7 +72,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
private bool m_Enabled = false;
- public Type ReplaceableInterface
+ public Type ReplaceableInterface
{
get { return null; }
}
@@ -134,7 +134,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
{
if (!m_Enabled)
return;
-
+
scene.RegisterModuleInterface(this);
if (Scene == null)
@@ -261,9 +261,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
public bool AddItem(InventoryItemBase item)
{
// m_log.DebugFormat(
-// "[LOCAL INVENTORY SERVICES CONNECTOR]: Adding inventory item {0} to user {1} folder {2}",
+// "[LOCAL INVENTORY SERVICES CONNECTOR]: Adding inventory item {0} to user {1} folder {2}",
// item.Name, item.Owner, item.Folder);
-
+
return m_InventoryService.AddItem(item);
}
@@ -292,13 +292,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_InventoryService.DeleteItems(ownerID, itemIDs);
}
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID principalID, UUID itemID)
{
// m_log.DebugFormat("[LOCAL INVENTORY SERVICES CONNECTOR]: Requesting inventory item {0}", item.ID);
// UUID requestedItemId = item.ID;
-
- item = m_InventoryService.GetItem(item);
+
+ InventoryItemBase item = m_InventoryService.GetItem(principalID, itemID);
// if (null == item)
// m_log.ErrorFormat(
@@ -312,9 +312,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_InventoryService.GetMultipleItems(userID, itemIDs);
}
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID principalID, UUID folderID)
{
- return m_InventoryService.GetFolder(folder);
+ return m_InventoryService.GetFolder(principalID, folderID);
}
///
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
index 978b9d9..d8ae2c4 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteXInventoryServiceConnector.cs
@@ -74,7 +74,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
}
}
- public Type ReplaceableInterface
+ public Type ReplaceableInterface
{
get { return null; }
}
@@ -292,15 +292,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_RemoteConnector.DeleteItems(ownerID, itemIDs);
}
- public InventoryItemBase GetItem(InventoryItemBase item)
+ public InventoryItemBase GetItem(UUID userID, UUID itemID)
{
//m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetItem {0}", item.ID);
- if (item == null)
- return null;
if (m_RemoteConnector == null)
m_log.DebugFormat("[XINVENTORY CONNECTOR]: connector stub is null!!!");
- return m_RemoteConnector.GetItem(item);
+ return m_RemoteConnector.GetItem(userID, itemID);
}
public InventoryItemBase[] GetMultipleItems(UUID userID, UUID[] itemIDs)
@@ -311,13 +309,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
return m_RemoteConnector.GetMultipleItems(userID, itemIDs);
}
- public InventoryFolderBase GetFolder(InventoryFolderBase folder)
+ public InventoryFolderBase GetFolder(UUID userID, UUID folderID)
{
//m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetFolder {0}", folder.ID);
- if (folder == null)
- return null;
- return m_RemoteConnector.GetFolder(folder);
+ return m_RemoteConnector.GetFolder(userID, folderID);
}
public bool HasInventoryForUser(UUID userID)
@@ -337,4 +333,4 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
#endregion
}
-}
\ No newline at end of file
+}
--
cgit v1.1