32 lines
738 B
C#
32 lines
738 B
C#
using Enigmos.Exceptions;
|
|
using Nocturnis.Enigmos.Modules;
|
|
|
|
namespace Enigmos.Modules.ControllingModules;
|
|
|
|
public abstract partial class ControllingModule : BaseModule, IControllingModule
|
|
{
|
|
|
|
protected abstract void Route(IRootModule root);
|
|
public bool Visited { get; set; }
|
|
protected override void TimeoutHandler(ModuleExecutionTimeout timeout)
|
|
{
|
|
Visited = false;
|
|
base.TimeoutHandler(timeout);
|
|
}
|
|
|
|
public void RouteWithTimeoutHandle(IRootModule root)
|
|
{
|
|
if (Visited)
|
|
return;
|
|
TimeoutCheck(root);
|
|
try
|
|
{
|
|
Route(root);
|
|
}
|
|
catch (ModuleExecutionTimeout timeOut)
|
|
{
|
|
TimeoutHandler(timeOut);
|
|
}
|
|
}
|
|
}
|