using Enigmos.Exceptions; namespace Enigmos.Modules.ControllingModules; public abstract partial class ControllingModule : BaseModule { protected abstract void Route(RootModule root); public bool Visited { get; set; } protected override void TimeoutHandler(ModuleExecutionTimeout timeout) { Visited = false; base.TimeoutHandler(timeout); } public void RouteWithTimeoutHandle(RootModule root) { if (Visited) return; TimeoutCheck(root); try { Route(root); } catch (ModuleExecutionTimeout timeOut) { TimeoutHandler(timeOut); } } }