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