From 504ae63669e5c57cd89e8213b853c27506012f79 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Mon, 21 Jan 2008 15:06:49 +0000
Subject: * Make object persistence more granular by separating prim and prim
inventory persistence
---
.../Scenes/SceneObjectPart.Inventory.cs | 26 +++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs')
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
index 1a9e6c4..c0297cf 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
@@ -82,6 +82,11 @@ namespace OpenSim.Region.Environment.Scenes
}
///
+ /// Tracks whether inventory has changed since the last persistent backup
+ ///
+ private bool HasInventoryChanged;
+
+ ///
/// 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;
}
///
@@ -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);
}
}
+
+ ///
+ /// Process inventory backup
+ ///
+ ///
+ public void ProcessInventoryBackup(IRegionDataStore datastore)
+ {
+ if (HasInventoryChanged)
+ {
+ datastore.StorePrimInventory(UUID, TaskInventory);
+
+ HasInventoryChanged = false;
+ }
+ }
public class InventoryStringBuilder
{
--
cgit v1.1