Class TimeProviderProbeScheduler
- Namespace
- Kuestenlogik.Bowire.Monitoring
- Assembly
- Kuestenlogik.Bowire.Monitoring.dll
The Core scheduler: one TimeProvider-backed loop per probe.
Building on TimeProvider (not DateTime.UtcNow +
Task.Delay()) makes cadence, drift, and lazy-start resume drivable
from a fake clock in tests. Each iteration reads the probe's last ledger row,
computes the delay to its next run via ProbeSchedule, waits,
then runs it once through the ProbeRunner.
public sealed class TimeProviderProbeScheduler : IProbeScheduler
- Inheritance
-
TimeProviderProbeScheduler
- Implements
- Inherited Members
Constructors
TimeProviderProbeScheduler(ProbeRunner, OutcomeLedger, TimeProvider)
public TimeProviderProbeScheduler(ProbeRunner runner, OutcomeLedger ledger, TimeProvider timeProvider)
Parameters
runnerProbeRunnerledgerOutcomeLedgertimeProviderTimeProvider
Methods
RunAsync(IEnumerable<Probe>, CancellationToken)
Run every probe on its own cadence until ct cancels.
Each probe's first run is anchored to its last ledger row (lazy-start
resume), not the wall-clock at startup.
public Task RunAsync(IEnumerable<Probe> probes, CancellationToken ct)
Parameters
probesIEnumerable<Probe>ctCancellationToken
Returns
RunProbeLoopAsync(Probe, CancellationToken)
The per-probe loop: wait until the next scheduled run, run once, repeat. Exits cleanly on cancellation. Exposed for tests that drive a single probe against a fake clock.
public Task RunProbeLoopAsync(Probe probe, CancellationToken ct)
Parameters
probeProbectCancellationToken