LatencyPipelineBuilderExtensions
Extension methods for adding latency to a ResiliencePipelineBuilderBase.
using Polly.Simmy.Latency;
using Polly.Utils;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
namespace Polly.Simmy
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
internal static class LatencyPipelineBuilderExtensions
{
public static TBuilder AddChaosLatency<[System.Runtime.CompilerServices.Nullable(0)] TBuilder>(this TBuilder builder, bool enabled, double injectionRate, TimeSpan latency) where TBuilder : ResiliencePipelineBuilderBase
{
Guard.NotNull(builder, "builder");
return builder.AddChaosLatency(new LatencyStrategyOptions {
Enabled = enabled,
InjectionRate = injectionRate,
Latency = latency
});
}
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "All options members preserved.")]
public static TBuilder AddChaosLatency<[System.Runtime.CompilerServices.Nullable(0)] TBuilder>(this TBuilder builder, LatencyStrategyOptions options) where TBuilder : ResiliencePipelineBuilderBase
{
Guard.NotNull(builder, "builder");
Guard.NotNull(options, "options");
return builder.AddStrategy((StrategyBuilderContext context) => new LatencyChaosStrategy(options, context.TimeProvider, context.Telemetry), options);
}
}
}