acquire method

  1. @override
Future<void> acquire({
  1. int estimatedTokens = 0,
})
override

Implementation

@override
Future<void> acquire({int estimatedTokens = 0}) async {
  final cost = estimatedTokens > 0 ? estimatedTokens.toDouble() : 1.0;
  _refill();
  if (_budget >= cost && _waiters.isEmpty) {
    _budget -= cost;
    return;
  }
  final c = Completer<void>();
  _waiters.add(_TpmWaiter(cost, c));
  _scheduleWake();
  return c.future;
}