BrokenCircuitException
Exception thrown when a circuit is broken.
using Polly.Utils;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
namespace Polly.CircuitBreaker
{
[Serializable]
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public class BrokenCircuitException : ExecutionRejectedException
{
internal const string DefaultMessage = "The circuit is now open and is not allowing calls.";
public TimeSpan? RetryAfter { get; }
public BrokenCircuitException()
: base("The circuit is now open and is not allowing calls.")
{
}
public BrokenCircuitException(TimeSpan retryAfter)
: base($"""{retryAfter}""")
{
RetryAfter = retryAfter;
}
public BrokenCircuitException(string message)
: base(message)
{
}
public BrokenCircuitException(string message, TimeSpan retryAfter)
: base(message)
{
RetryAfter = retryAfter;
}
public BrokenCircuitException(string message, Exception inner)
: base(message, inner)
{
}
public BrokenCircuitException(string message, TimeSpan retryAfter, Exception inner)
: base(message, inner)
{
RetryAfter = retryAfter;
}
protected BrokenCircuitException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
Guard.NotNull(info, "info");
SerializationInfoEnumerator enumerator = info.GetEnumerator();
SerializationEntry current;
do {
if (!enumerator.MoveNext())
return;
current = enumerator.Current;
} while (!string.Equals(current.Name, "RetryAfter", StringComparison.Ordinal));
long ticks = (long)current.Value;
RetryAfter = new TimeSpan(ticks);
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
Guard.NotNull(info, "info");
if (RetryAfter.HasValue)
info.AddValue("RetryAfter", RetryAfter.Value.Ticks);
base.GetObjectData(info, context);
}
}
}