* Make object persistence more granular by separating prim and prim inventory persistence

This commit is contained in:
Justin Clarke Casey
2008-01-21 15:06:49 +00:00
parent da8923450a
commit 504ae63669
8 changed files with 141 additions and 131 deletions

View File

@@ -81,6 +81,11 @@ namespace OpenSim.Region.Environment.Scenes
set { m_taskInventory = value; }
}
/// <summary>
/// Tracks whether inventory has changed since the last persistent backup
/// </summary>
private bool HasInventoryChanged;
/// <summary>
/// Reset LLUUIDs for all the items in the prim's inventory. This involves either generating
/// new ones or setting existing UUIDs to the correct parent UUIDs
@@ -207,6 +212,7 @@ namespace OpenSim.Region.Environment.Scenes
}
m_inventorySerial++;
HasInventoryChanged = true;
}
/// <summary>
@@ -224,7 +230,7 @@ namespace OpenSim.Region.Environment.Scenes
TriggerScriptChangedEvent(Changed.INVENTORY);
}
}
m_inventorySerial++;
}
@@ -268,6 +274,8 @@ namespace OpenSim.Region.Environment.Scenes
m_taskInventory[item.ItemID] = item;
m_inventorySerial++;
TriggerScriptChangedEvent(Changed.INVENTORY);
HasInventoryChanged = true;
return true;
}
@@ -300,6 +308,8 @@ namespace OpenSim.Region.Environment.Scenes
m_inventorySerial++;
TriggerScriptChangedEvent(Changed.INVENTORY);
HasInventoryChanged = true;
return type;
}
else
@@ -380,6 +390,20 @@ namespace OpenSim.Region.Environment.Scenes
xferManager.AddNewFile(m_inventoryFileName, fileData);
}
}
/// <summary>
/// Process inventory backup
/// </summary>
/// <param name="datastore"></param>
public void ProcessInventoryBackup(IRegionDataStore datastore)
{
if (HasInventoryChanged)
{
datastore.StorePrimInventory(UUID, TaskInventory);
HasInventoryChanged = false;
}
}
public class InventoryStringBuilder
{