Files
Enigmos/Modules/ComputationalModules/ComputationalModule.cs
2024-06-30 01:52:44 +08:00

32 lines
898 B
C#

using Enigmos.Exceptions;
using Enigmos.Modules.ControllingModules;
using Enigmos.Ports.DataPorts;
using Nocturnis.Enigmos.Modules;
namespace Enigmos.Modules.ComputationalModules;
public abstract partial class ComputationalModule : BaseModule
{
protected override void TimeoutHandler(ModuleExecutionTimeout timeout)
{
foreach (DataOutPort port in Ports.OfType<DataOutPort>())
port.DataUpdated = false;
base.TimeoutHandler(timeout);
}
protected abstract void Compute(IRootModule root);
public void ComputeWithTimeoutHandle(IRootModule root)
{
foreach (DataOutPort port in Ports.OfType<DataOutPort>())
port.DataUpdated = true;
try
{
Compute(root);
}
catch (ModuleExecutionTimeout timeOut)
{
TimeoutHandler(timeOut);
}
TimeoutCheck(root);
}
}