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