tryAcquire method

bool tryAcquire([
  1. int tokens = 1
])

Try to acquire tokens tokens. Returns true if successful.

Implementation

bool tryAcquire([int tokens = 1]) {
  if (!enabled) {
    _debugLog('Rate limiting disabled, allowing acquire');
    onMetrics?.call(availableTokens, true);
    return true;
  }

  _refillTokens();

  if (_tokens >= tokens) {
    _tokens -= tokens;
    _debugLog('Acquired $tokens token(s), ${_tokens.toStringAsFixed(2)} remaining');
    onMetrics?.call(availableTokens, true);
    return true;
  }

  _debugLog('Failed to acquire $tokens token(s), '
      'only ${_tokens.toStringAsFixed(2)} available');
  onMetrics?.call(availableTokens, false);
  return false;
}