From 3cf7fb4eca2ad57835311e8098868f2571709392 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 19 Oct 2011 20:53:24 +0100 Subject: Add "scripts suspend" and "scripts resume" commands. These aim currently to suspend and resume all scripts. However, resume isn't currently working due to what looks like a bug in resume functionality itself. --- OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 50 +++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/ScriptEngine/XEngine/XEngine.cs') diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 304848e..bb08d90 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -274,6 +274,16 @@ namespace OpenSim.Region.ScriptEngine.XEngine MainConsole.Instance.Commands.AddCommand( "scripts", false, "show scripts", "show scripts", "Show script information", "Synonym for scripts show command", HandleShowScripts); + + MainConsole.Instance.Commands.AddCommand( + "scripts", false, "scripts suspend", "scripts suspend", "Suspend all scripts", + "Suspends all currently running scripts. This only suspends event delivery, it will not suspend a" + + " script that is currently processing an event.", + HandleSuspendScripts); + + MainConsole.Instance.Commands.AddCommand( + "scripts", false, "scripts resume", "scripts resume", "Resume all scripts", + "Resumes all currently suspended scripts", HandleResumeScripts); } public void HandleShowScripts(string module, string[] cmdparams) @@ -313,6 +323,44 @@ namespace OpenSim.Region.ScriptEngine.XEngine } } + public void HandleSuspendScripts(string module, string[] cmdparams) + { + lock (m_Scripts) + { + foreach (IScriptInstance instance in m_Scripts.Values) + { + if (!instance.Suspended) + { + instance.Suspend(); + + SceneObjectPart sop = m_Scene.GetSceneObjectPart(instance.ObjectID); + MainConsole.Instance.OutputFormat( + "Suspended {0}.{1}, item UUID {2}, prim UUID {3} @ {4}", + instance.PrimName, instance.ScriptName, instance.ItemID, instance.ObjectID, sop.AbsolutePosition); + } + } + } + } + + public void HandleResumeScripts(string module, string[] cmdparams) + { + lock (m_Scripts) + { + foreach (IScriptInstance instance in m_Scripts.Values) + { + if (instance.Suspended) + { + instance.Resume(); + + SceneObjectPart sop = m_Scene.GetSceneObjectPart(instance.ObjectID); + MainConsole.Instance.OutputFormat( + "Resumed {0}.{1}, item UUID {2}, prim UUID {3} @ {4}", + instance.PrimName, instance.ScriptName, instance.ItemID, instance.ObjectID, sop.AbsolutePosition); + } + } + } + } + public void RemoveRegion(Scene scene) { if (!m_Enabled) @@ -841,7 +889,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine m_log.DebugFormat( "[XEngine] Loaded script {0}.{1}, item UUID {2}, prim UUID {3} @ {4}.{5}", - part.ParentGroup.RootPart.Name, item.Name, itemID, part.UUID, + part.ParentGroup.RootPart.Name, item.Name, itemID, part.UUID, part.ParentGroup.RootPart.AbsolutePosition, part.ParentGroup.Scene.RegionInfo.RegionName); if (presence != null) -- cgit v1.1