public class DefaultBucketProxy extends AbstractBucket implements BucketProxy, OptimizationController
INFINITY_DURATION, UNLIMITED_AMOUNT| Constructor and Description |
|---|
DefaultBucketProxy(Supplier<BucketConfiguration> configurationSupplier,
CommandExecutor commandExecutor,
RecoveryStrategy recoveryStrategy,
ImplicitConfigurationReplacement implicitConfigurationReplacement) |
| 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 |
reset()
Reset all tokens up to maximum capacity.
|
protected VerboseResult<Nothing> |
resetVerboseImpl() |
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, tryConsumeUninterruptiblyclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddTokens, asBlocking, asScheduler, asVerbose, builder, consumeIgnoringRateLimits, estimateAbilityToConsume, forceAddTokens, replaceConfiguration, tryConsume, tryConsumeAndReturnRemaining, tryConsumeAsMuchAsPossible, tryConsumeAsMuchAsPossiblesyncImmediatelyconsume, consumeUninterruptibly, tryConsume, tryConsume, tryConsume, tryConsumeUninterruptibly, tryConsumeUninterruptibly, tryConsumeUninterruptiblytryConsumepublic DefaultBucketProxy(Supplier<BucketConfiguration> configurationSupplier, CommandExecutor commandExecutor, RecoveryStrategy recoveryStrategy, ImplicitConfigurationReplacement implicitConfigurationReplacement)
public BucketProxy toListenable(BucketListener listener)
Bucketlistener.
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 BuckettoListenable in interface BucketProxylistener - the listener of bucket events.listenerpublic 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 BucketProxypublic void syncByCondition(long unsynchronizedTokens,
Duration timeSinceLastSync)
OptimizationControllertrue:
unsynchronizedTokenstimeSinceLastSyncsyncByCondition in interface OptimizationControllerunsynchronizedTokens - criterion for accumulated amount of unsynchronized tokenstimeSinceLastSync - criterion for time passed since last synchronizationprotected long consumeAsMuchAsPossibleImpl(long limit)
consumeAsMuchAsPossibleImpl in class AbstractBucketprotected boolean tryConsumeImpl(long tokensToConsume)
tryConsumeImpl in class AbstractBucketprotected ConsumptionProbe tryConsumeAndReturnRemainingTokensImpl(long tokensToConsume)
tryConsumeAndReturnRemainingTokensImpl in class AbstractBucketprotected EstimationProbe estimateAbilityToConsumeImpl(long numTokens)
estimateAbilityToConsumeImpl in class AbstractBucketprotected long reserveAndCalculateTimeToSleepImpl(long tokensToConsume,
long waitIfBusyNanosLimit)
reserveAndCalculateTimeToSleepImpl in class AbstractBucketprotected void addTokensImpl(long tokensToAdd)
addTokensImpl in class AbstractBucketprotected void forceAddTokensImpl(long tokensToAdd)
forceAddTokensImpl in class AbstractBucketprotected void replaceConfigurationImpl(BucketConfiguration newConfiguration, TokensInheritanceStrategy tokensInheritanceStrategy)
replaceConfigurationImpl in class AbstractBucketprotected long consumeIgnoringRateLimitsImpl(long tokensToConsume)
consumeIgnoringRateLimitsImpl in class AbstractBucketpublic void reset()
Bucketpublic long getAvailableTokens()
BucketTypically 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 Bucketprotected VerboseResult<Long> consumeAsMuchAsPossibleVerboseImpl(long limit)
consumeAsMuchAsPossibleVerboseImpl in class AbstractBucketprotected VerboseResult<Boolean> tryConsumeVerboseImpl(long tokensToConsume)
tryConsumeVerboseImpl in class AbstractBucketprotected VerboseResult<ConsumptionProbe> tryConsumeAndReturnRemainingTokensVerboseImpl(long tokensToConsume)
tryConsumeAndReturnRemainingTokensVerboseImpl in class AbstractBucketprotected VerboseResult<EstimationProbe> estimateAbilityToConsumeVerboseImpl(long numTokens)
estimateAbilityToConsumeVerboseImpl in class AbstractBucketprotected VerboseResult<Long> getAvailableTokensVerboseImpl()
getAvailableTokensVerboseImpl in class AbstractBucketprotected VerboseResult<Nothing> addTokensVerboseImpl(long tokensToAdd)
addTokensVerboseImpl in class AbstractBucketprotected VerboseResult<Nothing> forceAddTokensVerboseImpl(long tokensToAdd)
forceAddTokensVerboseImpl in class AbstractBucketprotected VerboseResult<Nothing> resetVerboseImpl()
resetVerboseImpl in class AbstractBucketprotected VerboseResult<Nothing> replaceConfigurationVerboseImpl(BucketConfiguration newConfiguration, TokensInheritanceStrategy tokensInheritanceStrategy)
replaceConfigurationVerboseImpl in class AbstractBucketprotected VerboseResult<Long> consumeIgnoringRateLimitsVerboseImpl(long tokensToConsume)
consumeIgnoringRateLimitsVerboseImpl in class AbstractBucketCopyright © 2022. All rights reserved.