diff --git a/ApiReview/API.Polly.Core/AssemblyDependencies.txt b/ApiReview/API.Polly.Core/AssemblyDependencies.txt new file mode 100644 index 00000000000..734af6fc439 --- /dev/null +++ b/ApiReview/API.Polly.Core/AssemblyDependencies.txt @@ -0,0 +1,10 @@ +System.Collections +System.Collections.Concurrent +System.ComponentModel.Annotations +System.Linq +System.Private.CoreLib +System.Private.Uri +System.Runtime +System.Runtime.CompilerServices.Unsafe +System.Runtime.InteropServices +System.Threading diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/BrokenCircuitException.TResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/BrokenCircuitException.TResult.cs new file mode 100644 index 00000000000..7750a820091 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/BrokenCircuitException.TResult.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.CircuitBreaker; + +public class BrokenCircuitException : BrokenCircuitException +{ + public TResult Result { get; } + public BrokenCircuitException(TResult result); + public BrokenCircuitException(string message, TResult result); + public BrokenCircuitException(string message, Exception inner, TResult result); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/BrokenCircuitException.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/BrokenCircuitException.cs new file mode 100644 index 00000000000..016f4a6749c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/BrokenCircuitException.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System; + +namespace Polly.CircuitBreaker; + +public class BrokenCircuitException : ExecutionRejectedException +{ + public BrokenCircuitException(); + public BrokenCircuitException(string message); + public BrokenCircuitException(string message, Exception inner); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerManualControl.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerManualControl.cs new file mode 100644 index 00000000000..e795a2d4294 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerManualControl.cs @@ -0,0 +1,19 @@ +// Assembly 'Polly.Core' + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Threading.Tasks; + +namespace Polly.CircuitBreaker; + +public sealed class CircuitBreakerManualControl : IDisposable +{ + public CircuitBreakerManualControl(); + public CircuitBreakerManualControl(bool isIsolated); + public Task IsolateAsync(CancellationToken cancellationToken = default(CancellationToken)); + public Task CloseAsync(CancellationToken cancellationToken = default(CancellationToken)); + public void Dispose(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerPredicateArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerPredicateArguments.cs new file mode 100644 index 00000000000..336324b217f --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerPredicateArguments.cs @@ -0,0 +1,10 @@ +// Assembly 'Polly.Core' + +using System.Runtime.InteropServices; + +namespace Polly.CircuitBreaker; + +[StructLayout(LayoutKind.Sequential, Size = 1)] +public readonly struct CircuitBreakerPredicateArguments +{ +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStateProvider.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStateProvider.cs new file mode 100644 index 00000000000..dd9232e786f --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStateProvider.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System; + +namespace Polly.CircuitBreaker; + +public sealed class CircuitBreakerStateProvider +{ + public CircuitState CircuitState { get; } + public CircuitBreakerStateProvider(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStrategyOptions.TResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStrategyOptions.TResult.cs new file mode 100644 index 00000000000..3dfc6eb90c0 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStrategyOptions.TResult.cs @@ -0,0 +1,28 @@ +// Assembly 'Polly.Core' + +using System; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Polly.CircuitBreaker; + +public class CircuitBreakerStrategyOptions : ResilienceStrategyOptions +{ + [Range(0.0, 1.0)] + public double FailureRatio { get; set; } + [Range(2, int.MaxValue)] + public int MinimumThroughput { get; set; } + [Range(typeof(TimeSpan), "00:00:00.500", "1.00:00:00")] + public TimeSpan SamplingDuration { get; set; } + [Range(typeof(TimeSpan), "00:00:00.500", "1.00:00:00")] + public TimeSpan BreakDuration { get; set; } + [Required] + public Func, ValueTask> ShouldHandle { get; set; } + public Func, ValueTask>? OnClosed { get; set; } + public Func, ValueTask>? OnOpened { get; set; } + public Func? OnHalfOpened { get; set; } + public CircuitBreakerManualControl? ManualControl { get; set; } + public CircuitBreakerStateProvider? StateProvider { get; set; } + public CircuitBreakerStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStrategyOptions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStrategyOptions.cs new file mode 100644 index 00000000000..8c43c75894a --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitBreakerStrategyOptions.cs @@ -0,0 +1,8 @@ +// Assembly 'Polly.Core' + +namespace Polly.CircuitBreaker; + +public class CircuitBreakerStrategyOptions : CircuitBreakerStrategyOptions +{ + public CircuitBreakerStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitState.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitState.cs new file mode 100644 index 00000000000..267fc16afd6 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/CircuitState.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +namespace Polly.CircuitBreaker; + +public enum CircuitState +{ + Closed = 0, + Open = 1, + HalfOpen = 2, + Isolated = 3 +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/IsolatedCircuitException.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/IsolatedCircuitException.cs new file mode 100644 index 00000000000..0912bac3cef --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/IsolatedCircuitException.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System; + +namespace Polly.CircuitBreaker; + +public class IsolatedCircuitException : BrokenCircuitException +{ + public IsolatedCircuitException(); + public IsolatedCircuitException(string message); + public IsolatedCircuitException(string message, Exception innerException); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitClosedArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitClosedArguments.cs new file mode 100644 index 00000000000..1655767d388 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitClosedArguments.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.CircuitBreaker; + +public readonly struct OnCircuitClosedArguments +{ + public bool IsManual { get; } + public OnCircuitClosedArguments(bool isManual); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitHalfOpenedArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitHalfOpenedArguments.cs new file mode 100644 index 00000000000..7b14bef65c8 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitHalfOpenedArguments.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.CircuitBreaker; + +public readonly struct OnCircuitHalfOpenedArguments +{ + public ResilienceContext Context { get; } + public OnCircuitHalfOpenedArguments(ResilienceContext context); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitOpenedArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitOpenedArguments.cs new file mode 100644 index 00000000000..33eb500be72 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.CircuitBreaker/OnCircuitOpenedArguments.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.CircuitBreaker; + +public readonly struct OnCircuitOpenedArguments +{ + public TimeSpan BreakDuration { get; } + public bool IsManual { get; } + public OnCircuitOpenedArguments(TimeSpan breakDuration, bool isManual); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/FallbackPredicateArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/FallbackPredicateArguments.cs new file mode 100644 index 00000000000..89d084efc79 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/FallbackPredicateArguments.cs @@ -0,0 +1,10 @@ +// Assembly 'Polly.Core' + +using System.Runtime.InteropServices; + +namespace Polly.Fallback; + +[StructLayout(LayoutKind.Sequential, Size = 1)] +public readonly struct FallbackPredicateArguments +{ +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/FallbackStrategyOptions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/FallbackStrategyOptions.cs new file mode 100644 index 00000000000..f1a390a63d4 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/FallbackStrategyOptions.cs @@ -0,0 +1,18 @@ +// Assembly 'Polly.Core' + +using System; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Polly.Fallback; + +public class FallbackStrategyOptions : ResilienceStrategyOptions +{ + [Required] + public Func, ValueTask> ShouldHandle { get; set; } + [Required] + public Func, ValueTask>>? FallbackAction { get; set; } + public Func, ValueTask>? OnFallback { get; set; } + public FallbackStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/OnFallbackArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/OnFallbackArguments.cs new file mode 100644 index 00000000000..acb1f30d8bb --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Fallback/OnFallbackArguments.cs @@ -0,0 +1,10 @@ +// Assembly 'Polly.Core' + +using System.Runtime.InteropServices; + +namespace Polly.Fallback; + +[StructLayout(LayoutKind.Sequential, Size = 1)] +public readonly struct OnFallbackArguments +{ +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingActionGeneratorArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingActionGeneratorArguments.cs new file mode 100644 index 00000000000..8791f396df0 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingActionGeneratorArguments.cs @@ -0,0 +1,16 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Polly.Hedging; + +public readonly struct HedgingActionGeneratorArguments +{ + public ResilienceContext PrimaryContext { get; } + public ResilienceContext ActionContext { get; } + public int AttemptNumber { get; } + public Func>> Callback { get; } + public HedgingActionGeneratorArguments(ResilienceContext primaryContext, ResilienceContext actionContext, int attemptNumber, Func>> callback); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingDelayArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingDelayArguments.cs new file mode 100644 index 00000000000..19bd35f2c25 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingDelayArguments.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.Hedging; + +public readonly struct HedgingDelayArguments +{ + public ResilienceContext Context { get; } + public int AttemptNumber { get; } + public HedgingDelayArguments(ResilienceContext context, int attemptNumber); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingPredicateArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingPredicateArguments.cs new file mode 100644 index 00000000000..c78b66f0a35 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingPredicateArguments.cs @@ -0,0 +1,10 @@ +// Assembly 'Polly.Core' + +using System.Runtime.InteropServices; + +namespace Polly.Hedging; + +[StructLayout(LayoutKind.Sequential, Size = 1)] +public readonly struct HedgingPredicateArguments +{ +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingStrategyOptions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingStrategyOptions.cs new file mode 100644 index 00000000000..12c96df51d5 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/HedgingStrategyOptions.cs @@ -0,0 +1,22 @@ +// Assembly 'Polly.Core' + +using System; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Polly.Hedging; + +public class HedgingStrategyOptions : ResilienceStrategyOptions +{ + public TimeSpan HedgingDelay { get; set; } + [Range(2, 10)] + public int MaxHedgedAttempts { get; set; } + [Required] + public Func, ValueTask> ShouldHandle { get; set; } + [Required] + public Func, Func>>?> HedgingActionGenerator { get; set; } + public Func>? HedgingDelayGenerator { get; set; } + public Func, ValueTask>? OnHedging { get; set; } + public HedgingStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/OnHedgingArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/OnHedgingArguments.cs new file mode 100644 index 00000000000..4ef8e0b9265 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Hedging/OnHedgingArguments.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.Hedging; + +public readonly struct OnHedgingArguments +{ + public int AttemptNumber { get; } + public bool HasOutcome { get; } + public TimeSpan Duration { get; } + public OnHedgingArguments(int attemptNumber, bool hasOutcome, TimeSpan duration); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ConfigureBuilderContext.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ConfigureBuilderContext.cs new file mode 100644 index 00000000000..b5ccfbce603 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ConfigureBuilderContext.cs @@ -0,0 +1,15 @@ +// Assembly 'Polly.Core' + +using System; +using System.ComponentModel; +using System.Runtime.CompilerServices; +using System.Threading; + +namespace Polly.Registry; + +public class ConfigureBuilderContext where TKey : notnull +{ + public TKey PipelineKey { get; } + [EditorBrowsable(EditorBrowsableState.Never)] + public void EnableReloads(Func> tokenProducerFactory); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineProvider.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineProvider.cs new file mode 100644 index 00000000000..604d4fe4420 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineProvider.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Core' + +using System.Diagnostics.CodeAnalysis; + +namespace Polly.Registry; + +public abstract class ResiliencePipelineProvider where TKey : notnull +{ + public virtual ResiliencePipeline GetPipeline(TKey key); + public virtual ResiliencePipeline GetPipeline(TKey key); + public abstract bool TryGetPipeline(TKey key, [NotNullWhen(true)] out ResiliencePipeline? pipeline); + public abstract bool TryGetPipeline(TKey key, [NotNullWhen(true)] out ResiliencePipeline? pipeline); + protected ResiliencePipelineProvider(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineRegistry.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineRegistry.cs new file mode 100644 index 00000000000..f46308cd4ea --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineRegistry.cs @@ -0,0 +1,23 @@ +// Assembly 'Polly.Core' + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using Polly.Utils; + +namespace Polly.Registry; + +public sealed class ResiliencePipelineRegistry : ResiliencePipelineProvider where TKey : notnull +{ + public ResiliencePipelineRegistry(); + public ResiliencePipelineRegistry(ResiliencePipelineRegistryOptions options); + public override bool TryGetPipeline(TKey key, [NotNullWhen(true)] out ResiliencePipeline? pipeline); + public override bool TryGetPipeline(TKey key, [NotNullWhen(true)] out ResiliencePipeline? pipeline); + public ResiliencePipeline GetOrAddPipeline(TKey key, Action configure); + public ResiliencePipeline GetOrAddPipeline(TKey key, Action> configure); + public ResiliencePipeline GetOrAddPipeline(TKey key, Action> configure); + public ResiliencePipeline GetOrAddPipeline(TKey key, Action, ConfigureBuilderContext> configure); + public bool TryAddBuilder(TKey key, Action> configure); + public bool TryAddBuilder(TKey key, Action, ConfigureBuilderContext> configure); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineRegistryOptions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineRegistryOptions.cs new file mode 100644 index 00000000000..57d522e4e51 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Registry/ResiliencePipelineRegistryOptions.cs @@ -0,0 +1,22 @@ +// Assembly 'Polly.Core' + +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; + +namespace Polly.Registry; + +public class ResiliencePipelineRegistryOptions +{ + [Required] + public Func BuilderFactory { get; set; } + [Required] + public IEqualityComparer PipelineComparer { get; set; } + [Required] + public IEqualityComparer BuilderComparer { get; set; } + public Func? InstanceNameFormatter { get; set; } + [Required] + public Func BuilderNameFormatter { get; set; } + public ResiliencePipelineRegistryOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/OnRetryArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/OnRetryArguments.cs new file mode 100644 index 00000000000..c16b42ccf63 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/OnRetryArguments.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.Retry; + +public readonly struct OnRetryArguments +{ + public int AttemptNumber { get; } + public TimeSpan RetryDelay { get; } + public TimeSpan ExecutionTime { get; } + public OnRetryArguments(int attemptNumber, TimeSpan retryDelay, TimeSpan executionTime); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryBackoffType.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryBackoffType.cs new file mode 100644 index 00000000000..1c0c2f0a886 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryBackoffType.cs @@ -0,0 +1,10 @@ +// Assembly 'Polly.Core' + +namespace Polly.Retry; + +public enum RetryBackoffType +{ + Constant = 0, + Linear = 1, + Exponential = 2 +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryDelayArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryDelayArguments.cs new file mode 100644 index 00000000000..28b7ab5b978 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryDelayArguments.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.Retry; + +public readonly struct RetryDelayArguments +{ + public int AttemptNumber { get; } + public TimeSpan DelayHint { get; } + public RetryDelayArguments(int attemptNumber, TimeSpan delayHint); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryPredicateArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryPredicateArguments.cs new file mode 100644 index 00000000000..67862e25e72 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryPredicateArguments.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.Retry; + +public readonly struct RetryPredicateArguments +{ + public int AttemptNumber { get; } + public RetryPredicateArguments(int attemptNumber); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryStrategyOptions.TResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryStrategyOptions.TResult.cs new file mode 100644 index 00000000000..5dc2df8bc04 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryStrategyOptions.TResult.cs @@ -0,0 +1,27 @@ +// Assembly 'Polly.Core' + +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Polly.Retry; + +public class RetryStrategyOptions : ResilienceStrategyOptions +{ + [Range(1, int.MaxValue)] + public int RetryCount { get; set; } + public RetryBackoffType BackoffType { get; set; } + public bool UseJitter { get; set; } + [Range(typeof(TimeSpan), "00:00:00", "1.00:00:00")] + public TimeSpan BaseDelay { get; set; } + [Required] + public Func, ValueTask> ShouldHandle { get; set; } + public Func, ValueTask>? RetryDelayGenerator { get; set; } + public Func, ValueTask>? OnRetry { get; set; } + [EditorBrowsable(EditorBrowsableState.Never)] + [Required] + public Func Randomizer { get; set; } + public RetryStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryStrategyOptions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryStrategyOptions.cs new file mode 100644 index 00000000000..1a0f771982d --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Retry/RetryStrategyOptions.cs @@ -0,0 +1,8 @@ +// Assembly 'Polly.Core' + +namespace Polly.Retry; + +public class RetryStrategyOptions : RetryStrategyOptions +{ + public RetryStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ExecutionAttemptArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ExecutionAttemptArguments.cs new file mode 100644 index 00000000000..570f2d5ab6c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ExecutionAttemptArguments.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.Telemetry; + +public readonly struct ExecutionAttemptArguments +{ + public int AttemptNumber { get; } + public TimeSpan Duration { get; } + public bool Handled { get; } + public ExecutionAttemptArguments(int attemptNumber, TimeSpan duration, bool handled); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/PipelineExecutedArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/PipelineExecutedArguments.cs new file mode 100644 index 00000000000..3e0225cae70 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/PipelineExecutedArguments.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.Telemetry; + +public readonly struct PipelineExecutedArguments +{ + public TimeSpan Duration { get; } + public PipelineExecutedArguments(TimeSpan duration); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/PipelineExecutingArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/PipelineExecutingArguments.cs new file mode 100644 index 00000000000..38506a4f4f3 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/PipelineExecutingArguments.cs @@ -0,0 +1,10 @@ +// Assembly 'Polly.Core' + +using System.Runtime.InteropServices; + +namespace Polly.Telemetry; + +[StructLayout(LayoutKind.Sequential, Size = 1)] +public readonly struct PipelineExecutingArguments +{ +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceEvent.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceEvent.cs new file mode 100644 index 00000000000..168820550dd --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceEvent.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.Telemetry; + +public readonly struct ResilienceEvent +{ + public ResilienceEventSeverity Severity { get; } + public string EventName { get; } + public ResilienceEvent(ResilienceEventSeverity severity, string eventName); + public override string ToString(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceEventSeverity.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceEventSeverity.cs new file mode 100644 index 00000000000..a80058497c8 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceEventSeverity.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +namespace Polly.Telemetry; + +public enum ResilienceEventSeverity +{ + None = 0, + Debug = 1, + Information = 2, + Warning = 3, + Error = 4, + Critical = 5 +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceStrategyTelemetry.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceStrategyTelemetry.cs new file mode 100644 index 00000000000..d9099246c35 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceStrategyTelemetry.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.Telemetry; + +public sealed class ResilienceStrategyTelemetry +{ + public void Report(ResilienceEvent resilienceEvent, ResilienceContext context, TArgs args); + public void Report(ResilienceEvent resilienceEvent, OutcomeArguments args); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceTelemetrySource.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceTelemetrySource.cs new file mode 100644 index 00000000000..f4ab704f3ea --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/ResilienceTelemetrySource.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.Telemetry; + +public sealed class ResilienceTelemetrySource +{ + public string? PipelineName { get; } + public string? PipelineInstanceName { get; } + public string? StrategyName { get; } + public ResilienceTelemetrySource(string? pipelineName, string? pipelineInstanceName, string? strategyName); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/TelemetryEventArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/TelemetryEventArguments.cs new file mode 100644 index 00000000000..048ea5f4a45 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/TelemetryEventArguments.cs @@ -0,0 +1,15 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.Telemetry; + +public readonly struct TelemetryEventArguments +{ + public ResilienceTelemetrySource Source { get; } + public ResilienceEvent Event { get; } + public ResilienceContext Context { get; } + public TArgs Arguments { get; } + public Outcome? Outcome { get; } + public TelemetryEventArguments(ResilienceTelemetrySource source, ResilienceEvent resilienceEvent, ResilienceContext context, TArgs args, Outcome? outcome); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/TelemetryListener.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/TelemetryListener.cs new file mode 100644 index 00000000000..d26eb5588fe --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Telemetry/TelemetryListener.cs @@ -0,0 +1,9 @@ +// Assembly 'Polly.Core' + +namespace Polly.Telemetry; + +public abstract class TelemetryListener +{ + public abstract void Write(in TelemetryEventArguments args); + protected TelemetryListener(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/OnTimeoutArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/OnTimeoutArguments.cs new file mode 100644 index 00000000000..ab870e2a387 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/OnTimeoutArguments.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.Timeout; + +public readonly struct OnTimeoutArguments +{ + public ResilienceContext Context { get; } + public TimeSpan Timeout { get; } + public OnTimeoutArguments(ResilienceContext context, TimeSpan timeout); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutGeneratorArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutGeneratorArguments.cs new file mode 100644 index 00000000000..9230eadf78b --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutGeneratorArguments.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly.Timeout; + +public readonly struct TimeoutGeneratorArguments +{ + public ResilienceContext Context { get; } + public TimeoutGeneratorArguments(ResilienceContext context); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutRejectedException.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutRejectedException.cs new file mode 100644 index 00000000000..b360ec54335 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutRejectedException.cs @@ -0,0 +1,17 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.Timeout; + +public class TimeoutRejectedException : ExecutionRejectedException +{ + public TimeSpan Timeout { get; } + public TimeoutRejectedException(); + public TimeoutRejectedException(string message); + public TimeoutRejectedException(string message, Exception innerException); + public TimeoutRejectedException(TimeSpan timeout); + public TimeoutRejectedException(string message, TimeSpan timeout); + public TimeoutRejectedException(string message, TimeSpan timeout, Exception innerException); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutStrategyOptions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutStrategyOptions.cs new file mode 100644 index 00000000000..bc7d33939b0 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly.Timeout/TimeoutStrategyOptions.cs @@ -0,0 +1,17 @@ +// Assembly 'Polly.Core' + +using System; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Polly.Timeout; + +public class TimeoutStrategyOptions : ResilienceStrategyOptions +{ + [Range(typeof(TimeSpan), "00:00:01", "1.00:00:00")] + public TimeSpan Timeout { get; set; } + public Func>? TimeoutGenerator { get; set; } + public Func? OnTimeout { get; set; } + public TimeoutStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/CircuitBreakerResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/CircuitBreakerResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..3729f50d442 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/CircuitBreakerResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System.Diagnostics.CodeAnalysis; +using Polly.CircuitBreaker; + +namespace Polly; + +public static class CircuitBreakerResiliencePipelineBuilderExtensions +{ + public static ResiliencePipelineBuilder AddCircuitBreaker(this ResiliencePipelineBuilder builder, CircuitBreakerStrategyOptions options); + public static ResiliencePipelineBuilder AddCircuitBreaker(this ResiliencePipelineBuilder builder, CircuitBreakerStrategyOptions options); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ExecutionRejectedException.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ExecutionRejectedException.cs new file mode 100644 index 00000000000..d493eed3462 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ExecutionRejectedException.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System; + +namespace Polly; + +public abstract class ExecutionRejectedException : Exception +{ + protected ExecutionRejectedException(); + protected ExecutionRejectedException(string message); + protected ExecutionRejectedException(string message, Exception inner); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/FallbackResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/FallbackResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..fd6a8b57fe1 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/FallbackResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Diagnostics.CodeAnalysis; +using Polly.Fallback; + +namespace Polly; + +public static class FallbackResiliencePipelineBuilderExtensions +{ + public static ResiliencePipelineBuilder AddFallback(this ResiliencePipelineBuilder builder, FallbackStrategyOptions options); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/HedgingResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/HedgingResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..19b0bffead7 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/HedgingResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Diagnostics.CodeAnalysis; +using Polly.Hedging; + +namespace Polly; + +public static class HedgingResiliencePipelineBuilderExtensions +{ + public static ResiliencePipelineBuilder AddHedging(this ResiliencePipelineBuilder builder, HedgingStrategyOptions options); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/LegacySupport.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/LegacySupport.cs new file mode 100644 index 00000000000..597432b680a --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/LegacySupport.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +using System.Collections.Generic; +using System.ComponentModel; + +namespace Polly; + +[EditorBrowsable(EditorBrowsableState.Never)] +public static class LegacySupport +{ + [EditorBrowsable(EditorBrowsableState.Never)] + public static void SetProperties(this ResilienceProperties resilienceProperties, IDictionary properties, out IDictionary oldProperties); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/Outcome.TResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/Outcome.TResult.cs new file mode 100644 index 00000000000..24560ebd524 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/Outcome.TResult.cs @@ -0,0 +1,18 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; + +namespace Polly; + +public readonly struct Outcome +{ + public Exception? Exception { get; } + public TResult? Result { get; } + public bool HasResult { get; } + public bool IsVoidResult { get; } + public void EnsureSuccess(); + public bool TryGetResult(out TResult? result); + public override string ToString(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/Outcome.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/Outcome.cs new file mode 100644 index 00000000000..b58d155bff2 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/Outcome.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Core' + +using System; +using System.Threading.Tasks; + +namespace Polly; + +public static class Outcome +{ + public static Outcome FromResult(TResult? value); + public static ValueTask> FromResultAsTask(TResult value); + public static Outcome FromException(Exception exception); + public static ValueTask> FromExceptionAsTask(Exception exception); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/OutcomeArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/OutcomeArguments.cs new file mode 100644 index 00000000000..137ae82425c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/OutcomeArguments.cs @@ -0,0 +1,16 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly; + +public readonly struct OutcomeArguments +{ + public Outcome Outcome { get; } + public ResilienceContext Context { get; } + public TArgs Arguments { get; } + public Exception? Exception { get; } + public TResult? Result { get; } + public OutcomeArguments(ResilienceContext context, Outcome outcome, TArgs arguments); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateBuilder.TResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateBuilder.TResult.cs new file mode 100644 index 00000000000..13f8e226b4b --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateBuilder.TResult.cs @@ -0,0 +1,33 @@ +// Assembly 'Polly.Core' + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Threading.Tasks; +using Polly.CircuitBreaker; +using Polly.Fallback; +using Polly.Hedging; +using Polly.Retry; + +namespace Polly; + +public class PredicateBuilder +{ + [EditorBrowsable(EditorBrowsableState.Never)] + public static implicit operator Func, ValueTask>(PredicateBuilder builder); + [EditorBrowsable(EditorBrowsableState.Never)] + public static implicit operator Func, ValueTask>(PredicateBuilder builder); + [EditorBrowsable(EditorBrowsableState.Never)] + public static implicit operator Func, ValueTask>(PredicateBuilder builder); + [EditorBrowsable(EditorBrowsableState.Never)] + public static implicit operator Func, ValueTask>(PredicateBuilder builder); + public PredicateBuilder Handle() where TException : Exception; + public PredicateBuilder Handle(Func predicate) where TException : Exception; + public PredicateBuilder HandleInner() where TException : Exception; + public PredicateBuilder HandleInner(Func predicate) where TException : Exception; + public PredicateBuilder HandleResult(Func predicate); + public PredicateBuilder HandleResult(TResult result, IEqualityComparer? comparer = null); + public Predicate> Build(); + public Func, ValueTask> Build(); + public PredicateBuilder(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateBuilder.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateBuilder.cs new file mode 100644 index 00000000000..ab34313ff28 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateBuilder.cs @@ -0,0 +1,8 @@ +// Assembly 'Polly.Core' + +namespace Polly; + +public sealed class PredicateBuilder : PredicateBuilder +{ + public PredicateBuilder(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateResult.cs new file mode 100644 index 00000000000..f11084edc4c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/PredicateResult.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Threading.Tasks; + +namespace Polly; + +public static class PredicateResult +{ + public static ValueTask True { get; } + public static ValueTask False { get; } +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContext.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContext.cs new file mode 100644 index 00000000000..bfad6108111 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContext.cs @@ -0,0 +1,20 @@ +// Assembly 'Polly.Core' + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using System.Threading; +using Polly.Telemetry; + +namespace Polly; + +public sealed class ResilienceContext +{ + public string? OperationKey { get; } + public CancellationToken CancellationToken { get; } + public bool ContinueOnCapturedContext { get; } + public ResilienceProperties Properties { get; } + public IReadOnlyList ResilienceEvents { get; } +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContextCreationArguments.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContextCreationArguments.cs new file mode 100644 index 00000000000..fc60a8129f7 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContextCreationArguments.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; +using System.Threading; + +namespace Polly; + +public readonly struct ResilienceContextCreationArguments +{ + public string? OperationKey { get; } + public bool? ContinueOnCapturedContext { get; } + public CancellationToken CancellationToken { get; } + public ResilienceContextCreationArguments(string? operationKey, bool? continueOnCapturedContext, CancellationToken cancellationToken); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContextPool.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContextPool.cs new file mode 100644 index 00000000000..96d5ad01b97 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceContextPool.cs @@ -0,0 +1,19 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; +using System.Threading; +using Polly.Utils; + +namespace Polly; + +public abstract class ResilienceContextPool +{ + public static ResilienceContextPool Shared { get; } + public ResilienceContext Get(CancellationToken cancellationToken = default(CancellationToken)); + public ResilienceContext Get(string? operationKey, CancellationToken cancellationToken = default(CancellationToken)); + public ResilienceContext Get(string? operationKey, bool? continueOnCapturedContext, CancellationToken cancellationToken = default(CancellationToken)); + public ResilienceContext Get(bool continueOnCapturedContext, CancellationToken cancellationToken = default(CancellationToken)); + public abstract ResilienceContext Get(ResilienceContextCreationArguments arguments); + public abstract void Return(ResilienceContext context); + protected ResilienceContextPool(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipeline.T.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipeline.T.cs new file mode 100644 index 00000000000..33c81135af3 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipeline.T.cs @@ -0,0 +1,25 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Threading.Tasks; +using Polly.Utils; + +namespace Polly; + +public sealed class ResiliencePipeline +{ + public static readonly ResiliencePipeline Null; + public ValueTask ExecuteAsync(Func> callback, ResilienceContext context, TState state) where TResult : T; + public ValueTask ExecuteAsync(Func> callback, ResilienceContext context) where TResult : T; + public ValueTask ExecuteAsync(Func> callback, TState state, CancellationToken cancellationToken = default(CancellationToken)) where TResult : T; + public ValueTask ExecuteAsync(Func> callback, CancellationToken cancellationToken = default(CancellationToken)) where TResult : T; + public ValueTask> ExecuteOutcomeAsync(Func>> callback, ResilienceContext context, TState state) where TResult : T; + public TResult Execute(Func callback, ResilienceContext context, TState state) where TResult : T; + public TResult Execute(Func callback, ResilienceContext context) where TResult : T; + public TResult Execute(Func callback, CancellationToken cancellationToken = default(CancellationToken)) where TResult : T; + public TResult Execute(Func callback) where TResult : T; + public TResult Execute(Func callback, TState state) where TResult : T; + public TResult Execute(Func callback, TState state, CancellationToken cancellationToken = default(CancellationToken)) where TResult : T; +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipeline.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipeline.cs new file mode 100644 index 00000000000..d85aaa66d0a --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipeline.cs @@ -0,0 +1,36 @@ +// Assembly 'Polly.Core' + +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Threading.Tasks; +using Polly.Utils; + +namespace Polly; + +public sealed class ResiliencePipeline +{ + public static readonly ResiliencePipeline Null; + public ValueTask ExecuteAsync(Func callback, ResilienceContext context, TState state); + public ValueTask ExecuteAsync(Func callback, ResilienceContext context); + public ValueTask ExecuteAsync(Func callback, TState state, CancellationToken cancellationToken = default(CancellationToken)); + public ValueTask ExecuteAsync(Func callback, CancellationToken cancellationToken = default(CancellationToken)); + public ValueTask> ExecuteOutcomeAsync(Func>> callback, ResilienceContext context, TState state); + public ValueTask ExecuteAsync(Func> callback, ResilienceContext context, TState state); + public ValueTask ExecuteAsync(Func> callback, ResilienceContext context); + public ValueTask ExecuteAsync(Func> callback, TState state, CancellationToken cancellationToken = default(CancellationToken)); + public ValueTask ExecuteAsync(Func> callback, CancellationToken cancellationToken = default(CancellationToken)); + public void Execute(Action callback, ResilienceContext context, TState state); + public void Execute(Action callback, ResilienceContext context); + public void Execute(Action callback, TState state, CancellationToken cancellationToken = default(CancellationToken)); + public void Execute(Action callback, CancellationToken cancellationToken = default(CancellationToken)); + public void Execute(Action callback, TState state); + public void Execute(Action callback); + public TResult Execute(Func callback, ResilienceContext context, TState state); + public TResult Execute(Func callback, ResilienceContext context); + public TResult Execute(Func callback, CancellationToken cancellationToken = default(CancellationToken)); + public TResult Execute(Func callback); + public TResult Execute(Func callback, TState state); + public TResult Execute(Func callback, TState state, CancellationToken cancellationToken = default(CancellationToken)); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilder.TResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilder.TResult.cs new file mode 100644 index 00000000000..f9dfefe1d54 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilder.TResult.cs @@ -0,0 +1,9 @@ +// Assembly 'Polly.Core' + +namespace Polly; + +public sealed class ResiliencePipelineBuilder : ResiliencePipelineBuilderBase +{ + public ResiliencePipelineBuilder(); + public ResiliencePipeline Build(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilder.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilder.cs new file mode 100644 index 00000000000..f74f8510d14 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilder.cs @@ -0,0 +1,9 @@ +// Assembly 'Polly.Core' + +namespace Polly; + +public sealed class ResiliencePipelineBuilder : ResiliencePipelineBuilderBase +{ + public ResiliencePipeline Build(); + public ResiliencePipelineBuilder(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilderBase.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilderBase.cs new file mode 100644 index 00000000000..1007b713254 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilderBase.cs @@ -0,0 +1,19 @@ +// Assembly 'Polly.Core' + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using Polly.Telemetry; + +namespace Polly; + +public abstract class ResiliencePipelineBuilderBase +{ + public string? Name { get; set; } + public string? InstanceName { get; set; } + [EditorBrowsable(EditorBrowsableState.Never)] + public TelemetryListener? TelemetryListener { get; set; } +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..54b34b4ec27 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,15 @@ +// Assembly 'Polly.Core' + +using System; +using System.Diagnostics.CodeAnalysis; + +namespace Polly; + +public static class ResiliencePipelineBuilderExtensions +{ + public static TBuilder AddPipeline(this TBuilder builder, ResiliencePipeline pipeline) where TBuilder : ResiliencePipelineBuilderBase; + public static ResiliencePipelineBuilder AddPipeline(this ResiliencePipelineBuilder builder, ResiliencePipeline pipeline); + public static TBuilder AddStrategy(this TBuilder builder, Func factory, ResilienceStrategyOptions options) where TBuilder : ResiliencePipelineBuilderBase; + public static ResiliencePipelineBuilder AddStrategy(this ResiliencePipelineBuilder builder, Func> factory, ResilienceStrategyOptions options); + public static ResiliencePipelineBuilder AddStrategy(this ResiliencePipelineBuilder builder, Func> factory, ResilienceStrategyOptions options); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceProperties.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceProperties.cs new file mode 100644 index 00000000000..7a2b9b77a85 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceProperties.cs @@ -0,0 +1,15 @@ +// Assembly 'Polly.Core' + +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; + +namespace Polly; + +public sealed class ResilienceProperties +{ + public bool TryGetValue(ResiliencePropertyKey key, [MaybeNullWhen(false)] out TValue value); + public TValue GetValue(ResiliencePropertyKey key, TValue defaultValue); + public void Set(ResiliencePropertyKey key, TValue value); + public ResilienceProperties(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePropertyKey.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePropertyKey.cs new file mode 100644 index 00000000000..8cd0a41381c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResiliencePropertyKey.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly; + +public readonly struct ResiliencePropertyKey +{ + public string Key { get; } + public ResiliencePropertyKey(string key); + public override string ToString(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategy.TResult.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategy.TResult.cs new file mode 100644 index 00000000000..74fccacdc0c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategy.TResult.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System; +using System.Threading.Tasks; + +namespace Polly; + +public abstract class ResilienceStrategy +{ + protected internal abstract ValueTask> ExecuteCore(Func>> callback, ResilienceContext context, TState state); + protected ResilienceStrategy(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategy.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategy.cs new file mode 100644 index 00000000000..1fa4c5536e7 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategy.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System; +using System.Threading.Tasks; + +namespace Polly; + +public abstract class ResilienceStrategy +{ + protected internal abstract ValueTask> ExecuteCore(Func>> callback, ResilienceContext context, TState state); + protected ResilienceStrategy(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategyOptions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategyOptions.cs new file mode 100644 index 00000000000..0a199528825 --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/ResilienceStrategyOptions.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Core' + +using System.Runtime.CompilerServices; + +namespace Polly; + +public abstract class ResilienceStrategyOptions +{ + public string? Name { get; set; } + protected ResilienceStrategyOptions(); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/RetryResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/RetryResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..62290464c9c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/RetryResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System.Diagnostics.CodeAnalysis; +using Polly.Retry; + +namespace Polly; + +public static class RetryResiliencePipelineBuilderExtensions +{ + public static ResiliencePipelineBuilder AddRetry(this ResiliencePipelineBuilder builder, RetryStrategyOptions options); + public static ResiliencePipelineBuilder AddRetry(this ResiliencePipelineBuilder builder, RetryStrategyOptions options); +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/StrategyBuilderContext.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/StrategyBuilderContext.cs new file mode 100644 index 00000000000..0b8cbd2f69b --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/StrategyBuilderContext.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Core' + +using System; +using System.Runtime.CompilerServices; +using Polly.Telemetry; + +namespace Polly; + +public sealed class StrategyBuilderContext +{ + public ResilienceStrategyTelemetry Telemetry { get; } +} diff --git a/ApiReview/API.Polly.Core/NoDocs/Polly/TimeoutResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.Core/NoDocs/Polly/TimeoutResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..47b79965b0c --- /dev/null +++ b/ApiReview/API.Polly.Core/NoDocs/Polly/TimeoutResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Core' + +using System; +using System.Diagnostics.CodeAnalysis; +using Polly.Timeout; + +namespace Polly; + +public static class TimeoutResiliencePipelineBuilderExtensions +{ + public static TBuilder AddTimeout(this TBuilder builder, TimeSpan timeout) where TBuilder : ResiliencePipelineBuilderBase; + public static TBuilder AddTimeout(this TBuilder builder, TimeoutStrategyOptions options) where TBuilder : ResiliencePipelineBuilderBase; +} diff --git a/ApiReview/API.Polly.Extensions/AssemblyDependencies.txt b/ApiReview/API.Polly.Extensions/AssemblyDependencies.txt new file mode 100644 index 00000000000..1e96126ee43 --- /dev/null +++ b/ApiReview/API.Polly.Extensions/AssemblyDependencies.txt @@ -0,0 +1,19 @@ +Microsoft.Extensions.DependencyInjection.Abstractions +Microsoft.Extensions.Logging.Abstractions +Microsoft.Extensions.Options +Polly.Core +System.Collections +System.Collections.Concurrent +System.ComponentModel +System.ComponentModel.Annotations +System.Diagnostics.DiagnosticSource +System.Linq +System.Memory +System.Net.Http +System.Net.Primitives +System.Private.CoreLib +System.Private.Uri +System.Runtime +System.Runtime.CompilerServices.Unsafe +System.Runtime.InteropServices +System.Threading diff --git a/ApiReview/API.Polly.Extensions/NoDocs/Polly.DependencyInjection/AddResiliencePipelineContext.cs b/ApiReview/API.Polly.Extensions/NoDocs/Polly.DependencyInjection/AddResiliencePipelineContext.cs new file mode 100644 index 00000000000..67730cb39bd --- /dev/null +++ b/ApiReview/API.Polly.Extensions/NoDocs/Polly.DependencyInjection/AddResiliencePipelineContext.cs @@ -0,0 +1,16 @@ +// Assembly 'Polly.Extensions' + +using System; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using Polly.Registry; + +namespace Polly.DependencyInjection; + +public sealed class AddResiliencePipelineContext where TKey : notnull +{ + public TKey PipelineKey { get; } + public IServiceProvider ServiceProvider { get; } + public void EnableReloads(string? name = null); + public TOptions GetOptions(string? name = null); +} diff --git a/ApiReview/API.Polly.Extensions/NoDocs/Polly.Registry/ConfigureBuilderContextExtensions.cs b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Registry/ConfigureBuilderContextExtensions.cs new file mode 100644 index 00000000000..56fcaa51339 --- /dev/null +++ b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Registry/ConfigureBuilderContextExtensions.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Extensions' + +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Options; + +namespace Polly.Registry; + +public static class ConfigureBuilderContextExtensions +{ + public static void EnableReloads(this ConfigureBuilderContext context, IOptionsMonitor optionsMonitor, string? name = null) where TKey : notnull; +} diff --git a/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/EnrichmentContext.cs b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/EnrichmentContext.cs new file mode 100644 index 00000000000..26820d7011c --- /dev/null +++ b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/EnrichmentContext.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Extensions' + +using System.Collections.Generic; +using System.Runtime.CompilerServices; + +namespace Polly.Telemetry; + +public readonly struct EnrichmentContext +{ + public TelemetryEventArguments TelemetryEvent { get; } + public IList> Tags { get; } + public EnrichmentContext(in TelemetryEventArguments telemetryEvent, IList> tags); +} diff --git a/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/MeteringEnricher.cs b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/MeteringEnricher.cs new file mode 100644 index 00000000000..ef4fab2b86a --- /dev/null +++ b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/MeteringEnricher.cs @@ -0,0 +1,9 @@ +// Assembly 'Polly.Extensions' + +namespace Polly.Telemetry; + +public abstract class MeteringEnricher +{ + public abstract void Enrich(in EnrichmentContext context); + protected MeteringEnricher(); +} diff --git a/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/TelemetryOptions.cs b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/TelemetryOptions.cs new file mode 100644 index 00000000000..7d30857b3da --- /dev/null +++ b/ApiReview/API.Polly.Extensions/NoDocs/Polly.Telemetry/TelemetryOptions.cs @@ -0,0 +1,20 @@ +// Assembly 'Polly.Extensions' + +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using Microsoft.Extensions.Logging; + +namespace Polly.Telemetry; + +public class TelemetryOptions +{ + public TelemetryListener? TelemetryListener { get; set; } + [Required] + public ILoggerFactory LoggerFactory { get; set; } + public ICollection MeteringEnrichers { get; } + [Required] + public Func ResultFormatter { get; set; } + public TelemetryOptions(); +} diff --git a/ApiReview/API.Polly.Extensions/NoDocs/Polly/PollyServiceCollectionExtensions.cs b/ApiReview/API.Polly.Extensions/NoDocs/Polly/PollyServiceCollectionExtensions.cs new file mode 100644 index 00000000000..daa20fd7e40 --- /dev/null +++ b/ApiReview/API.Polly.Extensions/NoDocs/Polly/PollyServiceCollectionExtensions.cs @@ -0,0 +1,18 @@ +// Assembly 'Polly.Extensions' + +using System; +using Microsoft.Extensions.DependencyInjection; +using Polly.DependencyInjection; +using Polly.Registry; + +namespace Polly; + +public static class PollyServiceCollectionExtensions +{ + public static IServiceCollection AddResiliencePipeline(this IServiceCollection services, TKey key, Action> configure) where TKey : notnull; + public static IServiceCollection AddResiliencePipeline(this IServiceCollection services, TKey key, Action, AddResiliencePipelineContext> configure) where TKey : notnull; + public static IServiceCollection AddResiliencePipeline(this IServiceCollection services, TKey key, Action configure) where TKey : notnull; + public static IServiceCollection AddResiliencePipeline(this IServiceCollection services, TKey key, Action> configure) where TKey : notnull; + public static IServiceCollection AddResiliencePipelineRegistry(this IServiceCollection services, Action> configure) where TKey : notnull; + public static IServiceCollection AddResiliencePipelineRegistry(this IServiceCollection services) where TKey : notnull; +} diff --git a/ApiReview/API.Polly.Extensions/NoDocs/Polly/TelemetryResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.Extensions/NoDocs/Polly/TelemetryResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..abba73ace32 --- /dev/null +++ b/ApiReview/API.Polly.Extensions/NoDocs/Polly/TelemetryResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,13 @@ +// Assembly 'Polly.Extensions' + +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Logging; +using Polly.Telemetry; + +namespace Polly; + +public static class TelemetryResiliencePipelineBuilderExtensions +{ + public static TBuilder ConfigureTelemetry(this TBuilder builder, ILoggerFactory loggerFactory) where TBuilder : ResiliencePipelineBuilderBase; + public static TBuilder ConfigureTelemetry(this TBuilder builder, TelemetryOptions options) where TBuilder : ResiliencePipelineBuilderBase; +} diff --git a/ApiReview/API.Polly.RateLimiting/AssemblyDependencies.txt b/ApiReview/API.Polly.RateLimiting/AssemblyDependencies.txt new file mode 100644 index 00000000000..2413925cbd8 --- /dev/null +++ b/ApiReview/API.Polly.RateLimiting/AssemblyDependencies.txt @@ -0,0 +1,8 @@ +Polly.Core +System.ComponentModel.Annotations +System.Private.CoreLib +System.Private.Uri +System.Runtime +System.Runtime.CompilerServices.Unsafe +System.Runtime.InteropServices +System.Threading.RateLimiting diff --git a/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/OnRateLimiterRejectedArguments.cs b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/OnRateLimiterRejectedArguments.cs new file mode 100644 index 00000000000..9a265649082 --- /dev/null +++ b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/OnRateLimiterRejectedArguments.cs @@ -0,0 +1,15 @@ +// Assembly 'Polly.RateLimiting' + +using System; +using System.Runtime.CompilerServices; +using System.Threading.RateLimiting; + +namespace Polly.RateLimiting; + +public readonly struct OnRateLimiterRejectedArguments +{ + public ResilienceContext Context { get; } + public RateLimitLease Lease { get; } + public TimeSpan? RetryAfter { get; } + public OnRateLimiterRejectedArguments(ResilienceContext context, RateLimitLease lease, TimeSpan? retryAfter); +} diff --git a/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/RateLimiterRejectedException.cs b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/RateLimiterRejectedException.cs new file mode 100644 index 00000000000..15448871085 --- /dev/null +++ b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/RateLimiterRejectedException.cs @@ -0,0 +1,17 @@ +// Assembly 'Polly.RateLimiting' + +using System; +using System.Runtime.CompilerServices; + +namespace Polly.RateLimiting; + +public sealed class RateLimiterRejectedException : ExecutionRejectedException +{ + public TimeSpan? RetryAfter { get; } + public RateLimiterRejectedException(); + public RateLimiterRejectedException(TimeSpan retryAfter); + public RateLimiterRejectedException(string message); + public RateLimiterRejectedException(string message, TimeSpan retryAfter); + public RateLimiterRejectedException(string message, Exception inner); + public RateLimiterRejectedException(string message, TimeSpan retryAfter, Exception inner); +} diff --git a/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/RateLimiterStrategyOptions.cs b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/RateLimiterStrategyOptions.cs new file mode 100644 index 00000000000..1a398e76add --- /dev/null +++ b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/RateLimiterStrategyOptions.cs @@ -0,0 +1,18 @@ +// Assembly 'Polly.RateLimiting' + +using System; +using System.ComponentModel.DataAnnotations; +using System.Runtime.CompilerServices; +using System.Threading.RateLimiting; +using System.Threading.Tasks; + +namespace Polly.RateLimiting; + +public class RateLimiterStrategyOptions : ResilienceStrategyOptions +{ + [Required] + public ConcurrencyLimiterOptions DefaultRateLimiterOptions { get; set; } + public Func? OnRejected { get; set; } + public ResilienceRateLimiter? RateLimiter { get; set; } + public RateLimiterStrategyOptions(); +} diff --git a/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/ResilienceRateLimiter.cs b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/ResilienceRateLimiter.cs new file mode 100644 index 00000000000..2a3da718bd5 --- /dev/null +++ b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly.RateLimiting/ResilienceRateLimiter.cs @@ -0,0 +1,16 @@ +// Assembly 'Polly.RateLimiting' + +using System; +using System.Runtime.CompilerServices; +using System.Threading.RateLimiting; +using System.Threading.Tasks; + +namespace Polly.RateLimiting; + +public sealed class ResilienceRateLimiter : IDisposable, IAsyncDisposable +{ + public static ResilienceRateLimiter Create(RateLimiter rateLimiter); + public static ResilienceRateLimiter Create(PartitionedRateLimiter rateLimiter); + public ValueTask DisposeAsync(); + public void Dispose(); +} diff --git a/ApiReview/API.Polly.RateLimiting/NoDocs/Polly/RateLimiterResiliencePipelineBuilderExtensions.cs b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly/RateLimiterResiliencePipelineBuilderExtensions.cs new file mode 100644 index 00000000000..ca2b302ee2d --- /dev/null +++ b/ApiReview/API.Polly.RateLimiting/NoDocs/Polly/RateLimiterResiliencePipelineBuilderExtensions.cs @@ -0,0 +1,15 @@ +// Assembly 'Polly.RateLimiting' + +using System.Diagnostics.CodeAnalysis; +using System.Threading.RateLimiting; +using Polly.RateLimiting; + +namespace Polly; + +public static class RateLimiterResiliencePipelineBuilderExtensions +{ + public static TBuilder AddConcurrencyLimiter(this TBuilder builder, int permitLimit, int queueLimit = 0) where TBuilder : ResiliencePipelineBuilderBase; + public static TBuilder AddConcurrencyLimiter(this TBuilder builder, ConcurrencyLimiterOptions options) where TBuilder : ResiliencePipelineBuilderBase; + public static TBuilder AddRateLimiter(this TBuilder builder, RateLimiter limiter) where TBuilder : ResiliencePipelineBuilderBase; + public static TBuilder AddRateLimiter(this TBuilder builder, RateLimiterStrategyOptions options) where TBuilder : ResiliencePipelineBuilderBase; +} diff --git a/ApiReview/API.Polly.Testing/AssemblyDependencies.txt b/ApiReview/API.Polly.Testing/AssemblyDependencies.txt new file mode 100644 index 00000000000..9b2806941cf --- /dev/null +++ b/ApiReview/API.Polly.Testing/AssemblyDependencies.txt @@ -0,0 +1,103 @@ +corlib +Microsoft.Win32.Primitives +netstandard +Polly.Core +System.Buffers +System.Collections +System.Collections.Concurrent +System.Collections.NonGeneric +System.Collections.Specialized +System.ComponentModel +System.ComponentModel.EventBasedAsync +System.ComponentModel.Primitives +System.ComponentModel.TypeConverter +System.Console +System.Data.Common +System.Diagnostics.Contracts +System.Diagnostics.Debug +System.Diagnostics.FileVersionInfo +System.Diagnostics.Process +System.Diagnostics.StackTrace +System.Diagnostics.TextWriterTraceListener +System.Diagnostics.Tools +System.Diagnostics.TraceSource +System.Diagnostics.Tracing +System.Drawing.Primitives +System.IO.Compression +System.IO.Compression.Brotli +System.IO.Compression.ZipFile +System.IO.FileSystem +System.IO.FileSystem.DriveInfo +System.IO.FileSystem.Watcher +System.IO.IsolatedStorage +System.IO.MemoryMappedFiles +System.IO.Pipes +System.Linq +System.Linq.Expressions +System.Linq.Parallel +System.Linq.Queryable +System.Memory +System.Net.Http +System.Net.HttpListener +System.Net.Mail +System.Net.NameResolution +System.Net.NetworkInformation +System.Net.Ping +System.Net.Primitives +System.Net.Requests +System.Net.Security +System.Net.ServicePoint +System.Net.Sockets +System.Net.WebClient +System.Net.WebHeaderCollection +System.Net.WebProxy +System.Net.WebSockets +System.Net.WebSockets.Client +System.Numerics.Vectors +System.ObjectModel +System.Private.CoreLib +System.Private.DataContractSerialization +System.Private.Uri +System.Private.Xml +System.Private.Xml.Linq +System.Reflection.DispatchProxy +System.Reflection.Emit +System.Reflection.Emit.ILGeneration +System.Reflection.Emit.Lightweight +System.Reflection.Primitives +System.Resources.ResourceManager +System.Resources.Writer +System.Runtime +System.Runtime.CompilerServices.Unsafe +System.Runtime.CompilerServices.VisualC +System.Runtime.Extensions +System.Runtime.InteropServices +System.Runtime.InteropServices.RuntimeInformation +System.Runtime.Numerics +System.Runtime.Serialization.Formatters +System.Runtime.Serialization.Json +System.Runtime.Serialization.Primitives +System.Runtime.Serialization.Xml +System.Security.Claims +System.Security.Cryptography.Algorithms +System.Security.Cryptography.Csp +System.Security.Cryptography.Encoding +System.Security.Cryptography.Primitives +System.Security.Cryptography.X509Certificates +System.Security.Principal +System.Text.Encoding.Extensions +System.Text.RegularExpressions +System.Threading +System.Threading.Overlapped +System.Threading.Tasks +System.Threading.Tasks.Parallel +System.Threading.Thread +System.Threading.ThreadPool +System.Threading.Timer +System.Transactions.Local +System.Web.HttpUtility +System.Xml.ReaderWriter +System.Xml.XDocument +System.Xml.XmlSerializer +System.Xml.XPath +System.Xml.XPath.XDocument diff --git a/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResiliencePipelineDescriptor.cs b/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResiliencePipelineDescriptor.cs new file mode 100644 index 00000000000..a16a2751f6e --- /dev/null +++ b/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResiliencePipelineDescriptor.cs @@ -0,0 +1,14 @@ +// Assembly 'Polly.Testing' + +using System.Collections.Generic; +using System.Runtime.CompilerServices; + +namespace Polly.Testing; + +public sealed class ResiliencePipelineDescriptor +{ + public IReadOnlyList Strategies { get; } + public ResilienceStrategyDescriptor FirstStrategy { get; } + public bool IsReloadable { get; } + public ResiliencePipelineDescriptor(IReadOnlyList strategies, bool isReloadable); +} diff --git a/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResiliencePipelineExtensions.cs b/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResiliencePipelineExtensions.cs new file mode 100644 index 00000000000..78b41b470e8 --- /dev/null +++ b/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResiliencePipelineExtensions.cs @@ -0,0 +1,11 @@ +// Assembly 'Polly.Testing' + +using System.Collections.Generic; + +namespace Polly.Testing; + +public static class ResiliencePipelineExtensions +{ + public static ResiliencePipelineDescriptor GetPipelineDescriptor(this ResiliencePipeline pipeline); + public static ResiliencePipelineDescriptor GetPipelineDescriptor(this ResiliencePipeline pipeline); +} diff --git a/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResilienceStrategyDescriptor.cs b/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResilienceStrategyDescriptor.cs new file mode 100644 index 00000000000..87a8d155576 --- /dev/null +++ b/ApiReview/API.Polly.Testing/NoDocs/Polly.Testing/ResilienceStrategyDescriptor.cs @@ -0,0 +1,12 @@ +// Assembly 'Polly.Testing' + +using System.Runtime.CompilerServices; + +namespace Polly.Testing; + +public sealed class ResilienceStrategyDescriptor +{ + public ResilienceStrategyOptions? Options { get; } + public object StrategyInstance { get; } + public ResilienceStrategyDescriptor(ResilienceStrategyOptions? options, object strategyInstance); +}