<PackageReference Include="Polly.Core" Version="8.4.0" />

HealthMetrics

abstract class HealthMetrics
The health metrics for advanced circuit breaker. All operations here are executed from CircuitStateController<T> under a lock and are thread safe.
using System; using System.Runtime.CompilerServices; namespace Polly.CircuitBreaker.Health { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal abstract class HealthMetrics { private const short NumberOfWindows = 10; private static readonly TimeSpan ResolutionOfCircuitTimer = TimeSpan.FromMilliseconds(20); protected TimeProvider TimeProvider { get; } protected HealthMetrics(TimeProvider timeProvider) { TimeProvider = timeProvider; } public static HealthMetrics Create(TimeSpan samplingDuration, TimeProvider timeProvider) { if (!(samplingDuration < TimeSpan.FromTicks(ResolutionOfCircuitTimer.Ticks * 10))) return new RollingHealthMetrics(samplingDuration, 10, timeProvider); return new SingleHealthMetrics(samplingDuration, timeProvider); } public abstract void IncrementSuccess(); public abstract void IncrementFailure(); public abstract void Reset(); public abstract HealthInfo GetHealthInfo(); } }