From 615487a756c596de7e9d0c69e95e65a015e9e4b2 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Thu, 13 Sep 2007 05:25:26 +0000 Subject: Backup is now optional on classes * Removed unused BackUp method on EntityBase * Added overridable InSceneBackup property on SceneObjectGroup * Refactored out AttachToBackup and DetachFromBackup * Normalized namespace OpenSim.DataStore.MonoSqliteStorage to OpenSim.DataStore.MonoSqlite --- OpenSim/Region/Environment/Scenes/EntityBase.cs | 7 -- .../Region/Environment/Scenes/SceneObjectGroup.cs | 61 +++++++++++----- .../MonoSqliteDataStore.cs | 84 ++++++++++------------ 3 files changed, 81 insertions(+), 71 deletions(-) diff --git a/OpenSim/Region/Environment/Scenes/EntityBase.cs b/OpenSim/Region/Environment/Scenes/EntityBase.cs index a7b9d75..2caab9e 100644 --- a/OpenSim/Region/Environment/Scenes/EntityBase.cs +++ b/OpenSim/Region/Environment/Scenes/EntityBase.cs @@ -109,13 +109,6 @@ namespace OpenSim.Region.Environment.Scenes } /// - /// Called at a set interval to inform entities that they should back themsleves up to the DB - /// - public virtual void BackUp() - { - } - - /// /// Copies the entity /// /// diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index eff622a..99f1900 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -149,6 +149,15 @@ namespace OpenSim.Region.Environment.Scenes /// saying what prim(s) that user has selected. /// protected bool m_isSelected = false; + + protected virtual bool InSceneBackup + { + get + { + return true; + } + } + public bool IsSelected { get { return m_isSelected; } @@ -218,10 +227,20 @@ namespace OpenSim.Region.Environment.Scenes this.m_rootPart.ParentID = 0; this.m_rootPart.RegionHandle = m_regionHandle; this.UpdateParentIDs(); - m_scene.EventManager.OnBackup += this.ProcessBackup; + + AttachToBackup(); + this.ScheduleGroupForFullUpdate(); } + private void AttachToBackup() + { + if (InSceneBackup) + { + m_scene.EventManager.OnBackup += this.ProcessBackup; + } + } + /// /// /// @@ -243,7 +262,8 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart newPart = new SceneObjectPart(m_regionHandle, this, ownerID, localID, shape, pos, rootOffset); this.m_parts.Add(newPart.UUID, newPart); this.SetPartAsRoot(newPart); - m_scene.EventManager.OnBackup += this.ProcessBackup; + + AttachToBackup(); } #endregion @@ -307,7 +327,8 @@ namespace OpenSim.Region.Environment.Scenes } dupe.UpdateParentIDs(); - m_scene.EventManager.OnBackup += dupe.ProcessBackup; + dupe.AttachToBackup(); + return dupe; } @@ -523,13 +544,19 @@ namespace OpenSim.Region.Environment.Scenes } } - m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; + DetachFromBackup(objectGroup); + m_scene.DeleteEntity(objectGroup.UUID); - + objectGroup.DeleteParts(); this.ScheduleGroupForFullUpdate(); } + private void DetachFromBackup(SceneObjectGroup objectGroup) + { + m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; + } + private void LinkNonRootPart(SceneObjectPart part, Vector3 oldGroupPosition, Quaternion oldGroupRotation) { @@ -583,7 +610,7 @@ namespace OpenSim.Region.Environment.Scenes proper.ObjectData[0].FolderID = LLUUID.Zero; proper.ObjectData[0].FromTaskID = LLUUID.Zero; proper.ObjectData[0].GroupID = LLUUID.Zero; - proper.ObjectData[0].InventorySerial = (short) this.m_rootPart.InventorySerial; + proper.ObjectData[0].InventorySerial = (short)this.m_rootPart.InventorySerial; proper.ObjectData[0].LastOwnerID = this.m_rootPart.LastOwnerID; proper.ObjectData[0].ObjectID = this.UUID; proper.ObjectData[0].OwnerID = this.m_rootPart.OwnerID; @@ -672,7 +699,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = this.GetChildPart(localID); if (part != null) { - return part.GetInventoryFileName(remoteClient, localID); + return part.GetInventoryFileName(remoteClient, localID); } return false; } @@ -682,7 +709,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = this.GetChildPart(localID); if (part != null) { - part.RequestInventoryFile(xferManager); + part.RequestInventoryFile(xferManager); } return ""; } @@ -705,7 +732,7 @@ namespace OpenSim.Region.Environment.Scenes return true; } return false; - + } public bool AddInventoryItem(IClientAPI remoteClient, uint localID, InventoryItemBase item, LLUUID copyItemID) @@ -730,19 +757,19 @@ namespace OpenSim.Region.Environment.Scenes } else { - return AddInventoryItem(remoteClient, localID, item); + return AddInventoryItem(remoteClient, localID, item); } return false; } public int RemoveInventoryItem(IClientAPI remoteClient, uint localID, LLUUID itemID) { - SceneObjectPart part = this.GetChildPart(localID); - if (part != null) - { + SceneObjectPart part = this.GetChildPart(localID); + if (part != null) + { return part.RemoveInventoryItem(remoteClient, localID, itemID); - } - return -1; + } + return -1; } /// @@ -1077,7 +1104,7 @@ namespace OpenSim.Region.Environment.Scenes public void SetScene(Scene scene) { m_scene = scene; - m_scene.EventManager.OnBackup += this.ProcessBackup; + AttachToBackup(); } /// @@ -1153,7 +1180,7 @@ namespace OpenSim.Region.Environment.Scenes public void DeleteGroup() { - m_scene.EventManager.OnBackup -= this.ProcessBackup; + DetachFromBackup( this ); foreach (SceneObjectPart part in this.m_parts.Values) { List avatars = this.RequestSceneAvatars(); diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs index 65b03ad..6971cc8 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs @@ -1,25 +1,15 @@ using System; using System.Collections.Generic; -using System.Text; -using System.Xml; -using System.Xml.Serialization; -using System.IO; - -using OpenSim.Region.Environment.Scenes; -using OpenSim.Region.Environment.LandManagement; -using OpenSim.Region.Environment; -using OpenSim.Region.Environment.Interfaces; -using OpenSim.Framework.Console; -using OpenSim.Framework.Types; -using OpenSim.Framework.Utilities; -using libsecondlife; - using System.Data; -using System.Data.SqlTypes; - +using libsecondlife; using Mono.Data.SqliteClient; +using OpenSim.Framework.Console; +using OpenSim.Framework.Types; +using OpenSim.Region.Environment.Interfaces; +using OpenSim.Region.Environment.LandManagement; +using OpenSim.Region.Environment.Scenes; -namespace OpenSim.DataStore.MonoSqliteStorage +namespace OpenSim.DataStore.MonoSqlite { public class MonoSqliteDataStore : IRegionDataStore { @@ -402,37 +392,37 @@ namespace OpenSim.DataStore.MonoSqliteStorage prim.BaseMask = Convert.ToUInt32(row["BaseMask"]); // vectors prim.OffsetPosition = new LLVector3( - Convert.ToSingle(row["PositionX"]), - Convert.ToSingle(row["PositionY"]), - Convert.ToSingle(row["PositionZ"]) - ); + Convert.ToSingle(row["PositionX"]), + Convert.ToSingle(row["PositionY"]), + Convert.ToSingle(row["PositionZ"]) + ); prim.GroupPosition = new LLVector3( - Convert.ToSingle(row["GroupPositionX"]), - Convert.ToSingle(row["GroupPositionY"]), - Convert.ToSingle(row["GroupPositionZ"]) - ); + Convert.ToSingle(row["GroupPositionX"]), + Convert.ToSingle(row["GroupPositionY"]), + Convert.ToSingle(row["GroupPositionZ"]) + ); prim.Velocity = new LLVector3( - Convert.ToSingle(row["VelocityX"]), - Convert.ToSingle(row["VelocityY"]), - Convert.ToSingle(row["VelocityZ"]) - ); + Convert.ToSingle(row["VelocityX"]), + Convert.ToSingle(row["VelocityY"]), + Convert.ToSingle(row["VelocityZ"]) + ); prim.AngularVelocity = new LLVector3( - Convert.ToSingle(row["AngularVelocityX"]), - Convert.ToSingle(row["AngularVelocityY"]), - Convert.ToSingle(row["AngularVelocityZ"]) - ); + Convert.ToSingle(row["AngularVelocityX"]), + Convert.ToSingle(row["AngularVelocityY"]), + Convert.ToSingle(row["AngularVelocityZ"]) + ); prim.Acceleration = new LLVector3( - Convert.ToSingle(row["AccelerationX"]), - Convert.ToSingle(row["AccelerationY"]), - Convert.ToSingle(row["AccelerationZ"]) - ); + Convert.ToSingle(row["AccelerationX"]), + Convert.ToSingle(row["AccelerationY"]), + Convert.ToSingle(row["AccelerationZ"]) + ); // quaternions prim.RotationOffset = new LLQuaternion( - Convert.ToSingle(row["RotationX"]), - Convert.ToSingle(row["RotationY"]), - Convert.ToSingle(row["RotationZ"]), - Convert.ToSingle(row["RotationW"]) - ); + Convert.ToSingle(row["RotationX"]), + Convert.ToSingle(row["RotationY"]), + Convert.ToSingle(row["RotationZ"]), + Convert.ToSingle(row["RotationW"]) + ); return prim; } @@ -488,10 +478,10 @@ namespace OpenSim.DataStore.MonoSqliteStorage { PrimitiveBaseShape s = new PrimitiveBaseShape(); s.Scale = new LLVector3( - Convert.ToSingle(row["ScaleX"]), - Convert.ToSingle(row["ScaleY"]), - Convert.ToSingle(row["ScaleZ"]) - ); + Convert.ToSingle(row["ScaleX"]), + Convert.ToSingle(row["ScaleY"]), + Convert.ToSingle(row["ScaleZ"]) + ); // paths s.PCode = Convert.ToByte(row["PCode"]); s.PathBegin = Convert.ToUInt16(row["PathBegin"]); @@ -876,4 +866,4 @@ namespace OpenSim.DataStore.MonoSqliteStorage } } } -} +} \ No newline at end of file -- cgit v1.1