From 8579cc0d20b3f757c2fc595a19f466f4e17c8154 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 25 Mar 2022 18:37:27 +0000 Subject: [PATCH] mantis 8936: make yeng comand work only on selected (or first that did load, like other comands) region. Add option 'allregions' to some. With this option those comands run on all regions. Do 'yeng help' to list comands. Ofc this assuming i made no typroe/bug ;) --- .../Region/ScriptEngine/YEngine/XMREngine.cs | 67 ++++++++++++------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs b/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs index 9756649537..0cdc6d8385 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs @@ -279,10 +279,9 @@ namespace OpenSim.Region.ScriptEngine.Yengine } MainConsole.Instance.Commands.AddCommand("yeng", false, - "yeng", - "yeng [...|help|...] ...", + "yeng", "yeng [...|help|...] ...", "Run YEngine script engine commands", - RunTest); + RunConsoleCmds); TraceCalls("[YEngine]: Initialize successful"); } @@ -765,7 +764,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine TraceCalls("[YEngine]: YEngine.Close()"); } - private void RunTest(string module, string[] args) + private void RunConsoleCmds(string module, string[] args) { if(args.Length < 2) { @@ -773,9 +772,29 @@ namespace OpenSim.Region.ScriptEngine.Yengine return; } - m_log.Info("[YEngine]: " + m_Scene.RegionInfo.RegionName); + Scene consoleScene = SceneManager.Instance.CurrentOrFirstScene; + bool SelectedRegion = (consoleScene != null && consoleScene.RegionInfo.RegionID == m_Scene.RegionInfo.RegionID); + string cmd = args[1].ToLower(); + int firstPerRegionarg = args.Length >= 3 && args[2].Equals("allregions",StringComparison.InvariantCultureIgnoreCase) ? 3 : 2; + if (!SelectedRegion) + { + if(firstPerRegionarg < 3) + return; - switch(args[1]) + switch (cmd) + { + case "reset": + case "resume": + case "suspend": + break; + default: + return; + } + } + + m_log.InfoFormat("[YEngine] ****Region: {0}", m_Scene.RegionInfo.RegionName); + + switch(cmd) { case "cvv": m_log.InfoFormat("[YEngine]: compiled version value = {0}", @@ -784,32 +803,32 @@ namespace OpenSim.Region.ScriptEngine.Yengine case "help": case "?": - m_log.Info("[YEngine]: yeng reset [-help ...]"); - m_log.Info("[YEngine]: yeng resume - resume script processing"); - m_log.Info("[YEngine]: yeng suspend - suspend script processing"); + m_log.Info("[YEngine]: yeng reset [allregions] | [-help ...]"); + m_log.Info("[YEngine]: yeng resume [allregions] - resume script processing"); + m_log.Info("[YEngine]: yeng suspend [allregions] - suspend script processing"); m_log.Info("[YEngine]: yeng ls [-help ...]"); m_log.Info("[YEngine]: yeng cvv - show compiler version value"); - m_log.Info("[YEngine]: yeng mvv [] - show migration version value"); + //m_log.Info("[YEngine]: yeng mvv [] - show migration version value"); + //m_log.Info("[YEngine]: yeng mvv - show migration version value"); m_log.Info("[YEngine]: yeng tracecalls [yes | no]"); m_log.Info("[YEngine]: yeng verbose [yes | no]"); - m_log.Info("[YEngine]: yeng pev [-help ...] - post event"); + //m_log.Info("[YEngine]: yeng pev [-help ...] - post event"); break; case "ls": - XmrTestLs(args, 2); + XmrTestLs(args, firstPerRegionarg); break; case "mvv": - m_log.InfoFormat("[YEngine]: migration version value = {0}", - XMRInstance.migrationVersion); + m_log.InfoFormat("[YEngine]: migration version value = {0}", XMRInstance.migrationVersion); break; - case "pev": - XmrTestPev(args, 2); - break; + //case "pev": + // XmrTestPev(args, 2); + // break; case "reset": - XmrTestReset(args, 2); + XmrTestReset(args, firstPerRegionarg); break; case "resume": @@ -823,19 +842,19 @@ namespace OpenSim.Region.ScriptEngine.Yengine break; case "tracecalls": - if(args.Length > 2) - m_TraceCalls = (args[2][0] & 1) != 0; + if(args.Length > firstPerRegionarg) + m_TraceCalls = args[firstPerRegionarg].StartsWith("y", StringComparison.InvariantCultureIgnoreCase); m_log.Info("[YEngine]: tracecalls " + (m_TraceCalls ? "yes" : "no")); break; case "verbose": - if(args.Length > 2) - m_Verbose = (args[2][0] & 1) != 0; + if(args.Length > firstPerRegionarg) + m_Verbose = args[firstPerRegionarg].StartsWith("y", StringComparison.InvariantCultureIgnoreCase); m_log.Info("[YEngine]: verbose " + (m_Verbose ? "yes" : "no")); break; default: - m_log.Error("[YEngine]: unknown command " + args[1] + ", try 'yeng help'"); + m_log.ErrorFormat("[YEngine]: unknown command \"{0}\", try 'yeng help'", cmd); break; } } @@ -1306,7 +1325,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine instance.m_IState = XMRInstState.CONSTRUCT; instance.m_Running = item.ScriptRunning; - lock(m_InstancesDict) + lock (m_InstancesDict) { m_LockedDict = "RegisterInstance";