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