aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs49
1 files changed, 49 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 299d0da..139281d 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -96,6 +96,8 @@ namespace OpenSim.Region.Environment.Scenes
96 private int m_incrementsof15seconds = 0; 96 private int m_incrementsof15seconds = 0;
97 private volatile bool m_backingup = false; 97 private volatile bool m_backingup = false;
98 98
99 private Dictionary<UUID, ReturnInfo> m_returns = new Dictionary<UUID, ReturnInfo>();
100
99 protected string m_simulatorVersion = "OpenSimulator Server"; 101 protected string m_simulatorVersion = "OpenSimulator Server";
100 102
101 protected ModuleLoader m_moduleLoader; 103 protected ModuleLoader m_moduleLoader;
@@ -929,8 +931,54 @@ namespace OpenSim.Region.Environment.Scenes
929 /// <returns></returns> 931 /// <returns></returns>
930 public void Backup() 932 public void Backup()
931 { 933 {
934 m_returns.Clear();
935
932 EventManager.TriggerOnBackup(m_storageManager.DataStore); 936 EventManager.TriggerOnBackup(m_storageManager.DataStore);
933 m_backingup = false; 937 m_backingup = false;
938
939 foreach (KeyValuePair<UUID, ReturnInfo> ret in m_returns)
940 {
941 UUID transaction = UUID.Random();
942
943 GridInstantMessage msg = new GridInstantMessage();
944 msg.fromAgentID = new Guid(UUID.Zero.ToString()); // From server
945 msg.fromAgentSession = new Guid(transaction.ToString());
946 msg.toAgentID = new Guid(ret.Key.ToString());
947 msg.imSessionID = new Guid(transaction.ToString());
948 msg.timestamp = (uint)Util.UnixTimeSinceEpoch();
949 msg.fromAgentName = "Server";
950 msg.dialog = (byte)19; // Object msg
951 msg.fromGroup = false;
952 msg.offline = (byte)1;
953 msg.ParentEstateID = RegionInfo.EstateSettings.ParentEstateID;
954 msg.Position = Vector3.Zero;
955 msg.RegionID = RegionInfo.RegionID.Guid;
956 msg.binaryBucket = new byte[0];
957 if (ret.Value.count > 1)
958 msg.message = string.Format("Your {0} objects were returned from {1} in region {2} due to parcel auto return", ret.Value.count, ret.Value.location.ToString(), RegionInfo.RegionName);
959 else
960 msg.message = string.Format("Your object {0} was returned from {1} in region {2} due to parcel auto return", ret.Value.objectName, ret.Value.location.ToString(), RegionInfo.RegionName);
961
962 TriggerGridInstantMessage(msg, InstantMessageReceiver.IMModule);
963 }
964 }
965
966 public void AddReturn(UUID agentID, string objectName, Vector3 location)
967 {
968 if (m_returns.ContainsKey(agentID))
969 {
970 ReturnInfo info = m_returns[agentID];
971 info.count++;
972 m_returns[agentID] = info;
973 }
974 else
975 {
976 ReturnInfo info = new ReturnInfo();
977 info.count = 1;
978 info.objectName = objectName;
979 info.location = location;
980 m_returns[agentID] = info;
981 }
934 } 982 }
935 983
936 #endregion 984 #endregion
@@ -2254,6 +2302,7 @@ namespace OpenSim.Region.Environment.Scenes
2254 client.OnUndo += m_innerScene.HandleUndo; 2302 client.OnUndo += m_innerScene.HandleUndo;
2255 client.OnObjectGroupRequest += m_innerScene.HandleObjectGroupUpdate; 2303 client.OnObjectGroupRequest += m_innerScene.HandleObjectGroupUpdate;
2256 client.OnParcelReturnObjectsRequest += LandChannel.ReturnObjectsInParcel; 2304 client.OnParcelReturnObjectsRequest += LandChannel.ReturnObjectsInParcel;
2305 client.OnParcelSetOtherCleanTime += LandChannel.SetParcelOtherCleanTime;
2257 client.OnObjectSaleInfo += ObjectSaleInfo; 2306 client.OnObjectSaleInfo += ObjectSaleInfo;
2258 client.OnScriptReset += ProcessScriptReset; 2307 client.OnScriptReset += ProcessScriptReset;
2259 client.OnGetScriptRunning += GetScriptRunning; 2308 client.OnGetScriptRunning += GetScriptRunning;