- java.lang.Object
-
- java.lang.Enum<TokensInheritanceStrategy>
-
- io.github.bucket4j.TokensInheritanceStrategy
-
- All Implemented Interfaces:
Serializable,Comparable<TokensInheritanceStrategy>
public enum TokensInheritanceStrategy extends Enum<TokensInheritanceStrategy>
Specifies the rules for inheritance of available tokens whenBucket.replaceConfiguration(BucketConfiguration, TokensInheritanceStrategy)happens.
-
-
Enum Constant Summary
Enum Constants Enum Constant Description ADDITIVEInstructs to copy available tokens as is, but with one exclusion: if new bandwidth capacity is greater than old capacity, available tokens will be increased by the difference between the old and the new configuration.AS_ISInstructs to copy available tokens as is, but with one exclusion: if available tokens is greater than new capacity, available tokens will be decreased to new capacity.PROPORTIONALLYMakes to copy available tokens proportional to bandwidth capacity by following formula:newAvailableTokens = availableTokensBeforeReplacement * (newBandwidthCapacity / capacityBeforeReplacement)RESETUse this mode when you want just to forget about previous bucket state.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static TokensInheritanceStrategygetById(byte id)bytegetId()static TokensInheritanceStrategyvalueOf(String name)Returns the enum constant of this type with the specified name.static TokensInheritanceStrategy[]values()Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
PROPORTIONALLY
public static final TokensInheritanceStrategy PROPORTIONALLY
Makes to copy available tokens proportional to bandwidth capacity by following formula:newAvailableTokens = availableTokensBeforeReplacement * (newBandwidthCapacity / capacityBeforeReplacement)Let's describe few examples.
Example 1: imagine bandwidth that was created by
Bandwidth.classic(100, Refill.gready(10, Duration.ofMinutes(1))). At the moment of config replacement it was 40 available tokens. After replacing this bandwidth by followingBandwidth.classic(200, Refill.gready(10, Duration.ofMinutes(1)))40 available tokens will be multiplied by 2(200/100), and after replacement we will have 80 available tokens.Example 2: imagine bandwidth that was created by
Bandwidth.classic(100, Refill.gready(10, Duration.ofMinutes(1))). At the moment of config replacement it was 40 available tokens. After replacing this bandwidth by followingBandwidth.classic(20, Refill.gready(10, Duration.ofMinutes(1)))40 available tokens will be multiplied by 0.2(20/100), and after replacement we will have 8 available tokens.
-
AS_IS
public static final TokensInheritanceStrategy AS_IS
Instructs to copy available tokens as is, but with one exclusion: if available tokens is greater than new capacity, available tokens will be decreased to new capacity.Let's describe few examples.
Example 1: imagine bandwidth that was created by
Bandwidth.classic(100, Refill.gready(10, Duration.ofMinutes(1))). At the moment of config replacement it was 40 available tokens. After replacing this bandwidth by followingBandwidth.classic(200, Refill.gready(10, Duration.ofMinutes(1)))40 available tokens will be just copied, and after replacement we will have 40 available tokens.Example 2: imagine bandwidth that was created by
Bandwidth.classic(100, Refill.gready(10, Duration.ofMinutes(1))). At the moment of config replacement it was 40 available tokens. After replacing this bandwidth by followingBandwidth.classic(20, Refill.gready(10, Duration.ofMinutes(1)))40 available tokens can not be copied as is, because it is greater then new capacity, so available tokens will be reduced to 20.
-
RESET
public static final TokensInheritanceStrategy RESET
Use this mode when you want just to forget about previous bucket state.bucket.replaceConfiguration(newConfiguration, TokensInheritanceStrategy.RESET)just erases all previous state. Using this strategy equals to removing bucket and creating again with new configuration.
-
ADDITIVE
public static final TokensInheritanceStrategy ADDITIVE
Instructs to copy available tokens as is, but with one exclusion: if new bandwidth capacity is greater than old capacity, available tokens will be increased by the difference between the old and the new configuration.The formula is
newAvailableTokens = Math.min(availableTokensBeforeReplacement, newBandwidthCapacity) + Math.max(0, newBandwidthCapacity - capacityBeforeReplacement)Let's describe few examples.
Example 1: imagine bandwidth that was created by
Bandwidth.classic(100, Refill.gready(10, Duration.ofMinutes(1))). At the moment of configuration replacement, it was 40 available tokens. After replacing this bandwidth by followingBandwidth.classic(200, Refill.gready(10, Duration.ofMinutes(1)))40 available tokens will be copied and added to the difference between old and new configuration, and after replacement, we will have 140 available tokens.Example 2: imagine bandwidth that was created by
Bandwidth.classic(100, Refill.gready(10, Duration.ofMinutes(1))). At the moment of config replacement it was 40 available tokens. After replacing this bandwidth by followingBandwidth.classic(20, Refill.gready(10, Duration.ofMinutes(1)))), and after replacement we will have 20 available tokens.Example 3: imagine bandwidth that was created by
Bandwidth.classic(100, Refill.gready(10, Duration.ofMinutes(1))). At the moment of config replacement it was 10 available tokens. After replacing this bandwidth by followingBandwidth.classic(20, Refill.gready(10, Duration.ofMinutes(1)))), and after replacement we will have 10 available tokens.
-
-
Method Detail
-
values
public static TokensInheritanceStrategy[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (TokensInheritanceStrategy c : TokensInheritanceStrategy.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static TokensInheritanceStrategy valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException- if this enum type has no constant with the specified nameNullPointerException- if the argument is null
-
getById
public static TokensInheritanceStrategy getById(byte id)
-
getId
public byte getId()
-
-