@Override public void acquire(Map<String, Integer> tagToCreditsMap) { ensureTagsAreValid(tagToCreditsMap); tagToCreditsMap.forEach((tag, numberOfCredits) -> tagToRateLimiterMap.get(tag).acquire(numberOfCredits)); }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
@Override public int acquire(int numberOfCredit, long timeout, TimeUnit unit) { ensureTagsAreValid(DEFAULT_TAG_MAP); return tagToRateLimiterMap.get(DEFAULT_TAG).tryAcquire(numberOfCredit, timeout, unit) ? numberOfCredit : 0; }
@Override public int acquire(int numberOfCredit, long timeout, TimeUnit unit) { ensureTagsAreValid(DEFAULT_TAG_MAP); return tagToRateLimiterMap.get(DEFAULT_TAG).tryAcquire(numberOfCredit, timeout, unit) ? numberOfCredit : 0; }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
@Override public void acquire(Map<String, Integer> tagToCreditsMap) { ensureTagsAreValid(tagToCreditsMap); tagToCreditsMap.forEach((tag, numberOfCredits) -> tagToRateLimiterMap.get(tag).acquire(numberOfCredits)); }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
@Override public int acquire(int numberOfCredit, long timeout, TimeUnit unit) { ensureTagsAreValid(DEFAULT_TAG_MAP); return tagToRateLimiterMap.get(DEFAULT_TAG).tryAcquire(numberOfCredit, timeout, unit) ? numberOfCredit : 0; }
@Override public void acquire(Map<String, Integer> tagToCreditsMap) { ensureTagsAreValid(tagToCreditsMap); tagToCreditsMap.forEach((tag, numberOfCredits) -> tagToRateLimiterMap.get(tag).acquire(numberOfCredits)); }
@Override public void acquire(Map<String, Integer> tagToCreditsMap) { ensureTagsAreValid(tagToCreditsMap); tagToCreditsMap.forEach((tag, numberOfCredits) -> tagToRateLimiterMap.get(tag).acquire(numberOfCredits)); }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
@Override public void acquire(Map<String, Integer> tagToCreditsMap) { ensureTagsAreValid(tagToCreditsMap); tagToCreditsMap.forEach((tag, numberOfCredits) -> tagToRateLimiterMap.get(tag).acquire(numberOfCredits)); }
@Override public int acquire(int numberOfCredit, long timeout, TimeUnit unit) { ensureTagsAreValid(DEFAULT_TAG_MAP); return tagToRateLimiterMap.get(DEFAULT_TAG).tryAcquire(numberOfCredit, timeout, unit) ? numberOfCredit : 0; }
@Override public int acquire(int numberOfCredit, long timeout, TimeUnit unit) { ensureTagsAreValid(DEFAULT_TAG_MAP); return tagToRateLimiterMap.get(DEFAULT_TAG).tryAcquire(numberOfCredit, timeout, unit) ? numberOfCredit : 0; }
@Override public Map<String, Integer> acquire(Map<String, Integer> tagToCreditsMap, long timeout, TimeUnit unit) { ensureTagsAreValid(tagToCreditsMap); long timeoutInNanos = NANOSECONDS.convert(timeout, unit); Stopwatch stopwatch = Stopwatch.createStarted(); return tagToCreditsMap.entrySet().stream() .map(e -> { String tag = e.getKey(); int requiredCredits = e.getValue(); long remainingTimeoutInNanos = Math.max(0L, timeoutInNanos - stopwatch.elapsed(NANOSECONDS)); com.google.common.util.concurrent.RateLimiter rateLimiter = tagToRateLimiterMap.get(tag); int availableCredits = rateLimiter.tryAcquire(requiredCredits, remainingTimeoutInNanos, NANOSECONDS) ? requiredCredits : 0; return new ImmutablePair<>(tag, availableCredits); }) .collect(Collectors.toMap(ImmutablePair::getKey, ImmutablePair::getValue)); }
@Override public Map<String, Integer> acquire(Map<String, Integer> tagToCreditsMap, long timeout, TimeUnit unit) { ensureTagsAreValid(tagToCreditsMap); long timeoutInNanos = NANOSECONDS.convert(timeout, unit); Stopwatch stopwatch = Stopwatch.createStarted(); return tagToCreditsMap.entrySet().stream() .map(e -> { String tag = e.getKey(); int requiredCredits = e.getValue(); long remainingTimeoutInNanos = Math.max(0L, timeoutInNanos - stopwatch.elapsed(NANOSECONDS)); com.google.common.util.concurrent.RateLimiter rateLimiter = tagToRateLimiterMap.get(tag); int availableCredits = rateLimiter.tryAcquire(requiredCredits, remainingTimeoutInNanos, NANOSECONDS) ? requiredCredits : 0; return new ImmutablePair<>(tag, availableCredits); }) .collect(Collectors.toMap(ImmutablePair::getKey, ImmutablePair::getValue)); }
@Override public Map<String, Integer> acquire(Map<String, Integer> tagToCreditsMap, long timeout, TimeUnit unit) { ensureTagsAreValid(tagToCreditsMap); long timeoutInNanos = NANOSECONDS.convert(timeout, unit); Stopwatch stopwatch = Stopwatch.createStarted(); return tagToCreditsMap.entrySet().stream() .map(e -> { String tag = e.getKey(); int requiredCredits = e.getValue(); long remainingTimeoutInNanos = Math.max(0L, timeoutInNanos - stopwatch.elapsed(NANOSECONDS)); com.google.common.util.concurrent.RateLimiter rateLimiter = tagToRateLimiterMap.get(tag); int availableCredits = rateLimiter.tryAcquire(requiredCredits, remainingTimeoutInNanos, NANOSECONDS) ? requiredCredits : 0; return new ImmutablePair<>(tag, availableCredits); }) .collect(Collectors.toMap(ImmutablePair::getKey, ImmutablePair::getValue)); }
@Override public Map<String, Integer> acquire(Map<String, Integer> tagToCreditsMap, long timeout, TimeUnit unit) { ensureTagsAreValid(tagToCreditsMap); long timeoutInNanos = NANOSECONDS.convert(timeout, unit); Stopwatch stopwatch = Stopwatch.createStarted(); return tagToCreditsMap.entrySet().stream() .map(e -> { String tag = e.getKey(); int requiredCredits = e.getValue(); long remainingTimeoutInNanos = Math.max(0L, timeoutInNanos - stopwatch.elapsed(NANOSECONDS)); com.google.common.util.concurrent.RateLimiter rateLimiter = tagToRateLimiterMap.get(tag); int availableCredits = rateLimiter.tryAcquire(requiredCredits, remainingTimeoutInNanos, NANOSECONDS) ? requiredCredits : 0; return new ImmutablePair<>(tag, availableCredits); }) .collect(Collectors.toMap(ImmutablePair::getKey, ImmutablePair::getValue)); }
@Override public Map<String, Integer> acquire(Map<String, Integer> tagToCreditsMap, long timeout, TimeUnit unit) { ensureTagsAreValid(tagToCreditsMap); long timeoutInNanos = NANOSECONDS.convert(timeout, unit); Stopwatch stopwatch = Stopwatch.createStarted(); return tagToCreditsMap.entrySet().stream() .map(e -> { String tag = e.getKey(); int requiredCredits = e.getValue(); long remainingTimeoutInNanos = Math.max(0L, timeoutInNanos - stopwatch.elapsed(NANOSECONDS)); com.google.common.util.concurrent.RateLimiter rateLimiter = tagToRateLimiterMap.get(tag); int availableCredits = rateLimiter.tryAcquire(requiredCredits, remainingTimeoutInNanos, NANOSECONDS) ? requiredCredits : 0; return new ImmutablePair<>(tag, availableCredits); }) .collect(Collectors.toMap(ImmutablePair::getKey, ImmutablePair::getValue)); }