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

runner ProbeRunner
ledger OutcomeLedger
timeProvider TimeProvider

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

probes IEnumerable<Probe>
ct CancellationToken

Returns

Task

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

probe Probe
ct CancellationToken

Returns

Task