package reactor.util.retry;
import reactor.util.context.Context;
import reactor.util.context.ContextView;
final class ImmutableRetrySignal implements Retry.RetrySignal {
final long failureTotalIndex;
final long failureSubsequentIndex;
final Throwable failure;
final ContextView retryContext;
ImmutableRetrySignal(long failureTotalIndex, long failureSubsequentIndex,
Throwable failure) {
this(failureTotalIndex, failureSubsequentIndex, failure, Context.empty());
}
ImmutableRetrySignal(long failureTotalIndex, long failureSubsequentIndex,
Throwable failure, ContextView retryContext) {
this.failureTotalIndex = failureTotalIndex;
this.failureSubsequentIndex = failureSubsequentIndex;
this.failure = failure;
this.retryContext = retryContext;
}
@Override
public long totalRetries() {
return this.failureTotalIndex;
}
@Override
public long totalRetriesInARow() {
return this.failureSubsequentIndex;
}
@Override
public Throwable failure() {
return this.failure;
}
@Override
public ContextView retryContextView() {
return retryContext;
}
@Override
public Retry.RetrySignal copy() {
return this;
}
@Override
public String toString() {
return "attempt #" + (failureTotalIndex + 1) + " (" + (failureSubsequentIndex + 1) + " in a row), last failure={" + failure + '}';
}
}