mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 02:05:34 +08:00
Another major overhaul of inventory downloading, this time pertaining to inventory links. Added yet another function to IInventoryService to get multiple items at once, so that fetching collections of linked items is done once per folder instead of once per item.
This commit is contained in:
@@ -99,6 +99,22 @@ namespace OpenSim.Region.CoreModules.Framework.Library
|
||||
return invColl;
|
||||
}
|
||||
|
||||
public virtual InventoryItemBase[] GetMultipleItems(UUID principalID, UUID[] itemIDs)
|
||||
{
|
||||
InventoryItemBase[] itemColl = new InventoryItemBase[itemIDs.Length];
|
||||
int i = 0;
|
||||
InventoryItemBase item = new InventoryItemBase();
|
||||
item.Owner = principalID;
|
||||
foreach (UUID fid in itemIDs)
|
||||
{
|
||||
item.ID = fid;
|
||||
itemColl[i++] = GetItem(item);
|
||||
}
|
||||
|
||||
return itemColl;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Add a new folder to the user's inventory
|
||||
/// </summary>
|
||||
|
||||
@@ -615,6 +615,23 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
return connector.GetItem(item);
|
||||
}
|
||||
|
||||
public InventoryItemBase[] GetMultipleItems(UUID userID, UUID[] itemIDs)
|
||||
{
|
||||
if (itemIDs == null)
|
||||
return new InventoryItemBase[0];
|
||||
//m_log.Debug("[HG INVENTORY CONNECTOR]: GetItem " + item.ID);
|
||||
|
||||
string invURL = GetInventoryServiceURL(userID);
|
||||
|
||||
if (invURL == null) // not there, forward to local inventory connector to resolve
|
||||
lock (m_Lock)
|
||||
return m_LocalGridInventoryService.GetMultipleItems(userID, itemIDs);
|
||||
|
||||
IInventoryService connector = GetConnector(invURL);
|
||||
|
||||
return connector.GetMultipleItems(userID, itemIDs);
|
||||
}
|
||||
|
||||
public InventoryFolderBase GetFolder(InventoryFolderBase folder)
|
||||
{
|
||||
if (folder == null)
|
||||
|
||||
@@ -307,6 +307,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
return item;
|
||||
}
|
||||
|
||||
public InventoryItemBase[] GetMultipleItems(UUID userID, UUID[] itemIDs)
|
||||
{
|
||||
return m_InventoryService.GetMultipleItems(userID, itemIDs);
|
||||
}
|
||||
|
||||
public InventoryFolderBase GetFolder(InventoryFolderBase folder)
|
||||
{
|
||||
return m_InventoryService.GetFolder(folder);
|
||||
|
||||
@@ -303,6 +303,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||
return m_RemoteConnector.GetItem(item);
|
||||
}
|
||||
|
||||
public InventoryItemBase[] GetMultipleItems(UUID userID, UUID[] itemIDs)
|
||||
{
|
||||
if (itemIDs == null)
|
||||
return new InventoryItemBase[0];
|
||||
|
||||
return m_RemoteConnector.GetMultipleItems(userID, itemIDs);
|
||||
}
|
||||
|
||||
public InventoryFolderBase GetFolder(InventoryFolderBase folder)
|
||||
{
|
||||
//m_log.DebugFormat("[XINVENTORY CONNECTOR]: GetFolder {0}", folder.ID);
|
||||
|
||||
Reference in New Issue
Block a user