/// <inheritdoc/> protected override TResult Implementation <TResult>(Func <Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken) { /* This method is intentionally a pass-through. * Delegating to ProactiveFooEngine.Implementation<TResult>(...) allows the code to use that single synchronous implementation * for both TokenBucket and TokenBucket<TResult> */ return(TokenBucketEngine.Implementation( action, context, cancellationToken, _tokens, _timeWindow, _returnTokens )); }
/// <inheritdoc/> protected override TResult Implementation(Func <Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken) { /* This method is intentionally a pass-through. * Delegating to ProactiveFooEngine.Implementation<TResult>(...) allows the code to use that single synchronous implementation * for both TokenBucket.Execute<TResult>() and TokenBucket<TResult>.Execute(...) */ return(TokenBucketEngine.Implementation( action, context, cancellationToken, 50, TimeSpan.Zero, 50 /* The implementation should receive at least the above parameters, * but more parameters can also be passed: eg anything the policy was configured with. */ )); }