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