From 13526097f24b7a8ad63b1d482c44b44397fa055f Mon Sep 17 00:00:00 2001
From: Adam Frisby
Date: Thu, 1 May 2008 16:35:00 +0000
Subject: * Spring cleaning on Region.Environment. * Converted a large number
of read-only fields to be actually, readonly. * Reformatted code sections. *
Removed redundant code.
---
.../Scenes/SceneObjectPart.Inventory.cs | 150 +++++++++++----------
1 file changed, 76 insertions(+), 74 deletions(-)
(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 0215cec..c8a8f95 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
@@ -41,7 +41,12 @@ namespace OpenSim.Region.Environment.Scenes
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- private string m_inventoryFileName = String.Empty;
+ private readonly string m_inventoryFileName = String.Empty;
+
+ ///
+ /// Tracks whether inventory has changed since the last persistent backup
+ ///
+ private bool HasInventoryChanged;
///
/// The inventory folder for this prim
@@ -49,6 +54,17 @@ namespace OpenSim.Region.Environment.Scenes
private LLUUID m_folderID = LLUUID.Zero;
///
+ /// Serial count for inventory file , used to tell if inventory has changed
+ /// no need for this to be part of Database backup
+ ///
+ protected uint m_inventorySerial;
+
+ ///
+ /// Holds in memory prim inventory
+ ///
+ protected TaskInventoryDictionary m_taskInventory = new TaskInventoryDictionary();
+
+ ///
/// Exposing this is not particularly good, but it's one of the least evils at the moment to see
/// folder id from prim inventory item data, since it's not (yet) actually stored with the prim.
///
@@ -58,23 +74,12 @@ namespace OpenSim.Region.Environment.Scenes
set { m_folderID = value; }
}
- ///
- /// Serial count for inventory file , used to tell if inventory has changed
- /// no need for this to be part of Database backup
- ///
- protected uint m_inventorySerial = 0;
-
public uint InventorySerial
{
get { return m_inventorySerial; }
set { m_inventorySerial = value; }
}
- ///
- /// Holds in memory prim inventory
- ///
- protected TaskInventoryDictionary m_taskInventory = new TaskInventoryDictionary();
-
public TaskInventoryDictionary TaskInventory
{
get { return m_taskInventory; }
@@ -82,11 +87,6 @@ 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.
///
@@ -96,14 +96,14 @@ namespace OpenSim.Region.Environment.Scenes
public void ResetInventoryIDs()
{
lock (TaskInventory)
- {
+ {
if (0 == TaskInventory.Count)
{
- return;
+ return;
}
-
- HasInventoryChanged = true;
-
+
+ HasInventoryChanged = true;
+
IList items = new List(TaskInventory.Values);
TaskInventory.Clear();
@@ -132,9 +132,9 @@ namespace OpenSim.Region.Environment.Scenes
if (ownerId != item.OwnerID)
{
item.LastOwnerID = item.OwnerID;
- item.OwnerID = ownerId;
- item.BaseMask = item.NextOwnerMask & (uint)PermissionMask.All;
- item.OwnerMask = item.NextOwnerMask & (uint)PermissionMask.All;
+ item.OwnerID = ownerId;
+ item.BaseMask = item.NextOwnerMask & (uint) PermissionMask.All;
+ item.OwnerMask = item.NextOwnerMask & (uint) PermissionMask.All;
}
}
}
@@ -194,22 +194,22 @@ namespace OpenSim.Region.Environment.Scenes
AssetCache cache = m_parentGroup.Scene.AssetCache;
cache.GetAsset(item.AssetID, delegate(LLUUID assetID, AssetBase asset)
- {
- if (null == asset)
- {
- m_log.ErrorFormat(
- "[PRIMINVENTORY]: " +
- "Couldn't start script {0}, {1} since asset ID {2} could not be found",
- item.Name, item.ItemID, item.AssetID);
- }
- else
- {
- string script = Helpers.FieldToUTF8String(asset.Data);
- m_parentGroup.Scene.EventManager.TriggerRezScript(LocalId,item.ItemID,script);
- m_parentGroup.AddActiveScriptCount(1);
- ScheduleFullUpdate();
- }
- }, false);
+ {
+ if (null == asset)
+ {
+ m_log.ErrorFormat(
+ "[PRIMINVENTORY]: " +
+ "Couldn't start script {0}, {1} since asset ID {2} could not be found",
+ item.Name, item.ItemID, item.AssetID);
+ }
+ else
+ {
+ string script = Helpers.FieldToUTF8String(asset.Data);
+ m_parentGroup.Scene.EventManager.TriggerRezScript(LocalId, item.ItemID, script);
+ m_parentGroup.AddActiveScriptCount(1);
+ ScheduleFullUpdate();
+ }
+ }, false);
}
}
@@ -226,7 +226,6 @@ namespace OpenSim.Region.Environment.Scenes
if (m_taskInventory.ContainsKey(itemId))
{
StartScript(m_taskInventory[itemId]);
-
}
else
{
@@ -263,7 +262,7 @@ namespace OpenSim.Region.Environment.Scenes
{
foreach (TaskInventoryItem item in m_taskInventory.Values)
{
- if(item.Name == name)
+ if (item.Name == name)
return true;
}
return false;
@@ -271,14 +270,14 @@ namespace OpenSim.Region.Environment.Scenes
private string FindAvailableInventoryName(string name)
{
- if(!InventoryContainsName(name))
+ if (!InventoryContainsName(name))
return name;
- int suffix=1;
- while(suffix < 256)
+ int suffix = 1;
+ while (suffix < 256)
{
- string tryName=String.Format("{0} {1}", name, suffix);
- if(!InventoryContainsName(tryName))
+ string tryName = String.Format("{0} {1}", name, suffix);
+ if (!InventoryContainsName(tryName))
return tryName;
suffix++;
}
@@ -295,11 +294,11 @@ namespace OpenSim.Region.Environment.Scenes
item.CreationDate = 1000;
item.ParentPartID = UUID;
- string name=FindAvailableInventoryName(item.Name);
- if(name == String.Empty)
+ string name = FindAvailableInventoryName(item.Name);
+ if (name == String.Empty)
return;
- item.Name=name;
+ item.Name = name;
lock (m_taskInventory)
{
@@ -347,7 +346,7 @@ namespace OpenSim.Region.Environment.Scenes
// m_log.DebugFormat(
// "[PRIM INVENTORY]: Retrieved task inventory item {0}, {1} from prim {2}, {3}",
// m_taskInventory[itemID].Name, itemID, Name, UUID);
-
+
return m_taskInventory[itemID];
}
else
@@ -428,7 +427,6 @@ namespace OpenSim.Region.Environment.Scenes
scriptcount++;
}
}
-
}
if (scriptcount <= 0)
{
@@ -457,14 +455,14 @@ namespace OpenSim.Region.Environment.Scenes
///
///
public bool GetInventoryFileName(IClientAPI client, uint localID)
- {
+ {
// m_log.DebugFormat(
// "[PRIM INVENTORY]: Received request from client {0} for inventory file name of {1}, {2}",
// client.AgentId, Name, UUID);
-
+
if (m_inventorySerial > 0)
{
- client.SendTaskInventory(m_uuid, (short)m_inventorySerial,
+ client.SendTaskInventory(m_uuid, (short) m_inventorySerial,
Helpers.StringToField(m_inventoryFileName));
return true;
}
@@ -480,9 +478,9 @@ namespace OpenSim.Region.Environment.Scenes
///
///
public void RequestInventoryFile(IXfer xferManager)
- {
+ {
byte[] fileData = new byte[0];
-
+
// Confusingly, the folder item has to be the object id, while the 'parent id' has to be zero. This matches
// what appears to happen in the Second Life protocol. If this isn't the case. then various functionality
// isn't available (such as drag from prim inventory to agent inventory)
@@ -493,53 +491,53 @@ namespace OpenSim.Region.Environment.Scenes
foreach (TaskInventoryItem item in m_taskInventory.Values)
{
invString.AddItemStart();
- invString.AddNameValueLine("item_id", item.ItemID.ToString());
+ invString.AddNameValueLine("item_id", item.ItemID.ToString());
invString.AddNameValueLine("parent_id", m_folderID.ToString());
invString.AddPermissionsStart();
-
+
// FIXME: Temporary until permissions are properly sorted.
invString.AddNameValueLine("base_mask", "7fffffff");
invString.AddNameValueLine("owner_mask", "7fffffff");
invString.AddNameValueLine("group_mask", "7fffffff");
invString.AddNameValueLine("everyone_mask", "7fffffff");
invString.AddNameValueLine("next_owner_mask", "7fffffff");
-
+
// invString.AddNameValueLine("group_mask", "00000000");
// invString.AddNameValueLine("everyone_mask", "00000000");
// invString.AddNameValueLine("next_owner_mask", "00086000");
-
+
// invString.AddNameValueLine("base_mask", Helpers.UIntToHexString(item.BaseMask));
// invString.AddNameValueLine("owner_mask", Helpers.UIntToHexString(item.OwnerMask));
// invString.AddNameValueLine("group_mask", Helpers.UIntToHexString(item.GroupMask));
// invString.AddNameValueLine("everyone_mask", Helpers.UIntToHexString(item.EveryoneMask));
// invString.AddNameValueLine("next_owner_mask", Helpers.UIntToHexString(item.NextOwnerMask));
-
+
invString.AddNameValueLine("creator_id", item.CreatorID.ToString());
invString.AddNameValueLine("owner_id", item.OwnerID.ToString());
-
+
invString.AddNameValueLine("last_owner_id", item.LastOwnerID.ToString());
// invString.AddNameValueLine("last_owner_id", item.OwnerID.ToString());
-
+
invString.AddNameValueLine("group_id", item.GroupID.ToString());
invString.AddSectionEnd();
-
+
invString.AddNameValueLine("asset_id", item.AssetID.ToString());
invString.AddNameValueLine("type", TaskInventoryItem.Types[item.Type]);
invString.AddNameValueLine("inv_type", TaskInventoryItem.InvTypes[item.InvType]);
invString.AddNameValueLine("flags", "00000000");
-
+
invString.AddSaleStart();
invString.AddNameValueLine("sale_type", "not");
invString.AddNameValueLine("sale_price", "0");
invString.AddSectionEnd();
-
+
invString.AddNameValueLine("name", item.Name + "|");
invString.AddNameValueLine("desc", item.Description + "|");
-
+
invString.AddNameValueLine("creation_date", item.CreationDate.ToString());
// invString.AddNameValueLine("creation_date", "1209151453");
-
+
invString.AddSectionEnd();
}
}
@@ -571,6 +569,8 @@ namespace OpenSim.Region.Environment.Scenes
}
}
+ #region Nested type: InventoryStringBuilder
+
public class InventoryStringBuilder
{
public string BuildString = String.Empty;
@@ -596,13 +596,13 @@ namespace OpenSim.Region.Environment.Scenes
BuildString += "\tpermissions 0\n";
AddSectionStart();
}
-
+
public void AddSaleStart()
{
BuildString += "\tsale_info\t0\n";
AddSectionStart();
- }
-
+ }
+
protected void AddSectionStart()
{
BuildString += "\t{\n";
@@ -629,5 +629,7 @@ namespace OpenSim.Region.Environment.Scenes
{
}
}
+
+ #endregion
}
-}
+}
\ No newline at end of file
--
cgit v1.1