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 ;)

This commit is contained in:
UbitUmarov
2022-03-25 18:37:27 +00:00
parent 21204cb1f5
commit 8579cc0d20

View File

@@ -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 [<newvalue>] - show migration version value");
//m_log.Info("[YEngine]: yeng mvv [<newvalue>] - 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";