public class DefaultBucketProxy extends AbstractBucket implements BucketProxy, OptimizationController
INFINITY_DURATION, UNLIMITED_AMOUNT
Constructor and Description |
---|
DefaultBucketProxy(Supplier<BucketConfiguration> configurationSupplier,
CommandExecutor commandExecutor,
RecoveryStrategy recoveryStrategy) |
Modifier and Type | Method and Description |
---|---|
protected void |
addTokensImpl(long tokensToAdd) |
protected VerboseResult<Nothing> |
addTokensVerboseImpl(long tokensToAdd) |
protected long |
consumeAsMuchAsPossibleImpl(long limit) |
protected VerboseResult<Long> |
consumeAsMuchAsPossibleVerboseImpl(long limit) |
protected long |
consumeIgnoringRateLimitsImpl(long tokensToConsume) |
protected VerboseResult<Long> |
consumeIgnoringRateLimitsVerboseImpl(long tokensToConsume) |
protected EstimationProbe |
estimateAbilityToConsumeImpl(long numTokens) |
protected VerboseResult<EstimationProbe> |
estimateAbilityToConsumeVerboseImpl(long numTokens) |
protected void |
forceAddTokensImpl(long tokensToAdd) |
protected VerboseResult<Nothing> |
forceAddTokensVerboseImpl(long tokensToAdd) |
long |
getAvailableTokens()
Returns amount of available tokens in this bucket.
|
protected VerboseResult<Long> |
getAvailableTokensVerboseImpl() |
OptimizationController |
getOptimizationController()
Returns optimization controller for this proxy.
|
protected void |
replaceConfigurationImpl(BucketConfiguration newConfiguration,
TokensInheritanceStrategy tokensInheritanceStrategy) |
protected VerboseResult<Nothing> |
replaceConfigurationVerboseImpl(BucketConfiguration newConfiguration,
TokensInheritanceStrategy tokensInheritanceStrategy) |
protected long |
reserveAndCalculateTimeToSleepImpl(long tokensToConsume,
long waitIfBusyNanosLimit) |
void |
syncByCondition(long unsynchronizedTokens,
Duration timeSinceLastSync)
Initiates immediate synchronization of local copy of bucket with remote storage in case of both conditions bellow are
true :
Accumulated amount of locally consumed tokens without external synchronization is greater than or equal to unsynchronizedTokens
Time passed since last synchronization with external storage is greater than or equal to timeSinceLastSync
|
BucketProxy |
toListenable(BucketListener listener)
Returns new copy of this bucket instance decorated by
listener . |
protected ConsumptionProbe |
tryConsumeAndReturnRemainingTokensImpl(long tokensToConsume) |
protected VerboseResult<ConsumptionProbe> |
tryConsumeAndReturnRemainingTokensVerboseImpl(long tokensToConsume) |
protected boolean |
tryConsumeImpl(long tokensToConsume) |
protected VerboseResult<Boolean> |
tryConsumeVerboseImpl(long tokensToConsume) |
addTokens, asBlocking, asScheduler, asVerbose, completedFuture, consume, consume, consumeIgnoringRateLimits, consumeUninterruptibly, estimateAbilityToConsume, failedFuture, forceAddTokens, getListener, replaceConfiguration, tryConsume, tryConsume, tryConsume, tryConsumeAndReturnRemaining, tryConsumeAsMuchAsPossible, tryConsumeAsMuchAsPossible, tryConsumeUninterruptibly
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addTokens, asBlocking, asScheduler, asVerbose, builder, consumeIgnoringRateLimits, estimateAbilityToConsume, forceAddTokens, replaceConfiguration, tryConsume, tryConsumeAndReturnRemaining, tryConsumeAsMuchAsPossible, tryConsumeAsMuchAsPossible
syncImmediately
consume, consumeUninterruptibly, tryConsume, tryConsume, tryConsume, tryConsumeUninterruptibly, tryConsumeUninterruptibly, tryConsumeUninterruptibly
tryConsume
public DefaultBucketProxy(Supplier<BucketConfiguration> configurationSupplier, CommandExecutor commandExecutor, RecoveryStrategy recoveryStrategy)
public BucketProxy toListenable(BucketListener listener)
Bucket
listener
.
The created bucket will share same tokens with source bucket and vice versa.
See javadocs for BucketListener
in order to understand semantic of listener.toListenable
in interface Bucket
toListenable
in interface BucketProxy
listener
- the listener of bucket events.listener
public OptimizationController getOptimizationController()
BucketProxy
This method is actual only if an optimization was applied during bucket construction via RemoteBucketBuilder.withOptimization(Optimization)
otherwise returned controller will do nothing.
getOptimizationController
in interface BucketProxy
public void syncByCondition(long unsynchronizedTokens, Duration timeSinceLastSync)
OptimizationController
true
:
unsynchronizedTokens
timeSinceLastSync
syncByCondition
in interface OptimizationController
unsynchronizedTokens
- criterion for accumulated amount of unsynchronized tokenstimeSinceLastSync
- criterion for time passed since last synchronizationprotected long consumeAsMuchAsPossibleImpl(long limit)
consumeAsMuchAsPossibleImpl
in class AbstractBucket
protected boolean tryConsumeImpl(long tokensToConsume)
tryConsumeImpl
in class AbstractBucket
protected ConsumptionProbe tryConsumeAndReturnRemainingTokensImpl(long tokensToConsume)
tryConsumeAndReturnRemainingTokensImpl
in class AbstractBucket
protected EstimationProbe estimateAbilityToConsumeImpl(long numTokens)
estimateAbilityToConsumeImpl
in class AbstractBucket
protected long reserveAndCalculateTimeToSleepImpl(long tokensToConsume, long waitIfBusyNanosLimit)
reserveAndCalculateTimeToSleepImpl
in class AbstractBucket
protected void addTokensImpl(long tokensToAdd)
addTokensImpl
in class AbstractBucket
protected void forceAddTokensImpl(long tokensToAdd)
forceAddTokensImpl
in class AbstractBucket
protected void replaceConfigurationImpl(BucketConfiguration newConfiguration, TokensInheritanceStrategy tokensInheritanceStrategy)
replaceConfigurationImpl
in class AbstractBucket
protected long consumeIgnoringRateLimitsImpl(long tokensToConsume)
consumeIgnoringRateLimitsImpl
in class AbstractBucket
public long getAvailableTokens()
Bucket
Typically you should avoid using of this method for, because available tokens can be changed by concurrent transactions for case of multithreaded/multi-process environment.
getAvailableTokens
in interface Bucket
protected VerboseResult<Long> consumeAsMuchAsPossibleVerboseImpl(long limit)
consumeAsMuchAsPossibleVerboseImpl
in class AbstractBucket
protected VerboseResult<Boolean> tryConsumeVerboseImpl(long tokensToConsume)
tryConsumeVerboseImpl
in class AbstractBucket
protected VerboseResult<ConsumptionProbe> tryConsumeAndReturnRemainingTokensVerboseImpl(long tokensToConsume)
tryConsumeAndReturnRemainingTokensVerboseImpl
in class AbstractBucket
protected VerboseResult<EstimationProbe> estimateAbilityToConsumeVerboseImpl(long numTokens)
estimateAbilityToConsumeVerboseImpl
in class AbstractBucket
protected VerboseResult<Long> getAvailableTokensVerboseImpl()
getAvailableTokensVerboseImpl
in class AbstractBucket
protected VerboseResult<Nothing> addTokensVerboseImpl(long tokensToAdd)
addTokensVerboseImpl
in class AbstractBucket
protected VerboseResult<Nothing> forceAddTokensVerboseImpl(long tokensToAdd)
forceAddTokensVerboseImpl
in class AbstractBucket
protected VerboseResult<Nothing> replaceConfigurationVerboseImpl(BucketConfiguration newConfiguration, TokensInheritanceStrategy tokensInheritanceStrategy)
replaceConfigurationVerboseImpl
in class AbstractBucket
protected VerboseResult<Long> consumeIgnoringRateLimitsVerboseImpl(long tokensToConsume)
consumeIgnoringRateLimitsVerboseImpl
in class AbstractBucket
Copyright © 2022. All rights reserved.