* Refactor: Simplify CachedUserInfo.FolderReceive() by removing root folder special case
parent
0f716e3ac4
commit
9646258fdf
|
@ -117,7 +117,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Store a folder pending categorization when its parent is received.
|
/// Store a folder pending arrival of its parent
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder"></param>
|
/// <param name="folder"></param>
|
||||||
private void AddPendingFolder(InventoryFolderImpl folder)
|
private void AddPendingFolder(InventoryFolderImpl folder)
|
||||||
|
@ -138,26 +138,26 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add any pending folders which are children of parent
|
/// Add any pending folders which were received before the given folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="parentId">
|
/// <param name="parentId">
|
||||||
/// A <see cref="LLUUID"/>
|
/// A <see cref="LLUUID"/>
|
||||||
/// </param>
|
/// </param>
|
||||||
private void ResolvePendingFolders(InventoryFolderImpl parent)
|
private void ResolvePendingFolders(InventoryFolderImpl newFolder)
|
||||||
{
|
{
|
||||||
if (pendingCategorizationFolders.ContainsKey(parent.ID))
|
if (pendingCategorizationFolders.ContainsKey(newFolder.ID))
|
||||||
{
|
{
|
||||||
foreach (InventoryFolderImpl folder in pendingCategorizationFolders[parent.ID])
|
foreach (InventoryFolderImpl folder in pendingCategorizationFolders[newFolder.ID])
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "[INVENTORY CACHE]: Resolving pending received folder {0} {1} into {2} {3}",
|
// "[INVENTORY CACHE]: Resolving pending received folder {0} {1} into {2} {3}",
|
||||||
// folder.name, folder.folderID, parent.name, parent.folderID);
|
// folder.name, folder.folderID, parent.name, parent.folderID);
|
||||||
|
|
||||||
lock (parent.SubFolders)
|
lock (newFolder.SubFolders)
|
||||||
{
|
{
|
||||||
if (!parent.SubFolders.ContainsKey(folder.ID))
|
if (!newFolder.SubFolders.ContainsKey(folder.ID))
|
||||||
{
|
{
|
||||||
parent.SubFolders.Add(folder.ID, folder);
|
newFolder.SubFolders.Add(folder.ID, folder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
/// <param name="folderInfo"></param>
|
/// <param name="folderInfo"></param>
|
||||||
private void FolderReceive(InventoryFolderImpl folderInfo)
|
private void FolderReceive(InventoryFolderImpl newFolder)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "[INVENTORY CACHE]: Received folder {0} {1} for user {2}",
|
// "[INVENTORY CACHE]: Received folder {0} {1} for user {2}",
|
||||||
|
@ -217,46 +217,42 @@ namespace OpenSim.Framework.Communications.Cache
|
||||||
|
|
||||||
if (RootFolder == null)
|
if (RootFolder == null)
|
||||||
{
|
{
|
||||||
if (folderInfo.ParentID == LLUUID.Zero)
|
if (newFolder.ParentID == LLUUID.Zero)
|
||||||
{
|
{
|
||||||
m_rootFolder = folderInfo;
|
m_rootFolder = newFolder;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else if (RootFolder.ID == folderInfo.ParentID)
|
|
||||||
{
|
|
||||||
lock (RootFolder.SubFolders)
|
|
||||||
{
|
{
|
||||||
if (!RootFolder.SubFolders.ContainsKey(folderInfo.ID))
|
AddPendingFolder(newFolder);
|
||||||
{
|
|
||||||
RootFolder.SubFolders.Add(folderInfo.ID, folderInfo);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AddPendingFolder(folderInfo);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
InventoryFolderImpl folder = RootFolder.FindFolder(folderInfo.ParentID);
|
InventoryFolderImpl parentFolder = RootFolder.FindFolder(newFolder.ParentID);
|
||||||
|
|
||||||
lock (folder.SubFolders)
|
if (parentFolder != null)
|
||||||
{
|
{
|
||||||
if (folder != null)
|
lock (parentFolder.SubFolders)
|
||||||
{
|
{
|
||||||
if (!folder.SubFolders.ContainsKey(folderInfo.ID))
|
if (!parentFolder.SubFolders.ContainsKey(newFolder.ID))
|
||||||
{
|
{
|
||||||
folder.SubFolders.Add(folderInfo.ID, folderInfo);
|
parentFolder.SubFolders.Add(newFolder.ID, newFolder);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.WarnFormat(
|
||||||
|
"[INVENTORY CACHE]: Received folder {0} {1} from inventory service which has already been received",
|
||||||
|
newFolder.Name, newFolder.ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
else
|
||||||
AddPendingFolder(folderInfo);
|
{
|
||||||
}
|
AddPendingFolder(newFolder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ResolvePendingFolders(folderInfo);
|
ResolvePendingFolders(newFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue