From e14f449cc2a59cb84c195b9479bcd43c16cafc48 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 24 Nov 2010 22:14:53 +0000
Subject: Adding the skeleton for the restart module
---
.../Region/Framework/Interfaces/IRestartModule.cs | 39 ++++++++++++++++++++++
1 file changed, 39 insertions(+)
create mode 100644 OpenSim/Region/Framework/Interfaces/IRestartModule.cs
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Interfaces/IRestartModule.cs b/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
new file mode 100644
index 0000000..d8cac7b
--- /dev/null
+++ b/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using OpenMetaverse;
+
+namespace OpenSim.Region.Framework.Interfaces
+{
+ public interface IRestartModule
+ {
+ TimeSpan TimeUntilRestart { get; }
+ void ScheduleRestart(UUID initiator, string message, int seconds, int[] alerts, bool notice);
+ void AbortRestart(string message);
+ }
+}
--
cgit v1.1
From 6734c9f83ae00b762873c3d99293435552b9a0c2 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 25 Nov 2010 01:22:05 +0000
Subject: Implement the restart module
---
OpenSim/Region/Framework/Interfaces/IRestartModule.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Interfaces/IRestartModule.cs b/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
index d8cac7b..c68550f 100644
--- a/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
@@ -33,7 +33,7 @@ namespace OpenSim.Region.Framework.Interfaces
public interface IRestartModule
{
TimeSpan TimeUntilRestart { get; }
- void ScheduleRestart(UUID initiator, string message, int seconds, int[] alerts, bool notice);
+ void ScheduleRestart(UUID initiator, string message, int[] alerts, bool notice);
void AbortRestart(string message);
}
}
--
cgit v1.1
From 57c4def254b85997f5b8a4cd4e7d1db550947290 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 25 Nov 2010 03:16:52 +0000
Subject: Change all restarting to use the restart module. Remove hardcoded
behavior
---
OpenSim/Region/Framework/Scenes/Scene.cs | 57 +---------------------------
OpenSim/Region/Framework/Scenes/SceneBase.cs | 20 ++++------
2 files changed, 10 insertions(+), 67 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 4fc2cbc..129b52d 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -893,60 +893,6 @@ namespace OpenSim.Region.Framework.Scenes
return new GridRegion(RegionInfo);
}
- ///
- /// Given float seconds, this will restart the region.
- ///
- /// float indicating duration before restart.
- public virtual void Restart(float seconds)
- {
- // notifications are done in 15 second increments
- // so .. if the number of seconds is less then 15 seconds, it's not really a restart request
- // It's a 'Cancel restart' request.
-
- // RestartNow() does immediate restarting.
- if (seconds < 15)
- {
- m_restartTimer.Stop();
- m_dialogModule.SendGeneralAlert("Restart Aborted");
- }
- else
- {
- // Now we figure out what to set the timer to that does the notifications and calls, RestartNow()
- m_restartTimer.Interval = 15000;
- m_incrementsof15seconds = (int)seconds / 15;
- m_RestartTimerCounter = 0;
- m_restartTimer.AutoReset = true;
- m_restartTimer.Elapsed += new ElapsedEventHandler(RestartTimer_Elapsed);
- m_log.Info("[REGION]: Restarting Region in " + (seconds / 60) + " minutes");
- m_restartTimer.Start();
- m_dialogModule.SendNotificationToUsersInRegion(
- UUID.Random(), String.Empty, RegionInfo.RegionName + String.Format(": Restarting in {0} Minutes", (int)(seconds / 60.0)));
- }
- }
-
- // The Restart timer has occured.
- // We have to figure out if this is a notification or if the number of seconds specified in Restart
- // have elapsed.
- // If they have elapsed, call RestartNow()
- public void RestartTimer_Elapsed(object sender, ElapsedEventArgs e)
- {
- m_RestartTimerCounter++;
- if (m_RestartTimerCounter <= m_incrementsof15seconds)
- {
- if (m_RestartTimerCounter == 4 || m_RestartTimerCounter == 6 || m_RestartTimerCounter == 7)
- m_dialogModule.SendNotificationToUsersInRegion(
- UUID.Random(),
- String.Empty,
- RegionInfo.RegionName + ": Restarting in " + ((8 - m_RestartTimerCounter) * 15) + " seconds");
- }
- else
- {
- m_restartTimer.Stop();
- m_restartTimer.AutoReset = false;
- RestartNow();
- }
- }
-
// This causes the region to restart immediatley.
public void RestartNow()
{
@@ -969,7 +915,8 @@ namespace OpenSim.Region.Framework.Scenes
Close();
m_log.Error("[REGION]: Firing Region Restart Message");
- base.Restart(0);
+
+ base.Restart();
}
// This is a helper function that notifies root agents in this region that a new sim near them has come up
diff --git a/OpenSim/Region/Framework/Scenes/SceneBase.cs b/OpenSim/Region/Framework/Scenes/SceneBase.cs
index c71aefa..f343bc8 100644
--- a/OpenSim/Region/Framework/Scenes/SceneBase.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneBase.cs
@@ -218,18 +218,6 @@ namespace OpenSim.Region.Framework.Scenes
#region admin stuff
- ///
- /// Region Restart - Seconds till restart.
- ///
- ///
- public virtual void Restart(int seconds)
- {
- m_log.Error("[REGION]: passing Restart Message up the namespace");
- restart handlerPhysicsCrash = OnRestart;
- if (handlerPhysicsCrash != null)
- handlerPhysicsCrash(RegionInfo);
- }
-
public virtual bool PresenceChildStatus(UUID avatarID)
{
return false;
@@ -562,6 +550,14 @@ namespace OpenSim.Region.Framework.Scenes
get { return false; }
}
+ public void Restart()
+ {
+ // This has to be here to fire the event
+ restart handlerPhysicsCrash = OnRestart;
+ if (handlerPhysicsCrash != null)
+ handlerPhysicsCrash(RegionInfo);
+ }
+
public abstract bool CheckClient(UUID agentID, System.Net.IPEndPoint ep);
}
}
--
cgit v1.1