Skip to content

Commit d8b3db4

Browse files
github-actions[bot]Ali Khalili
andauthored
fix: rename request count to permit count (#76623)
Co-authored-by: Ali Khalili <[email protected]>
1 parent 78d8ce7 commit d8b3db4

File tree

3 files changed

+91
-91
lines changed

3 files changed

+91
-91
lines changed

src/libraries/System.Threading.RateLimiting/ref/System.Threading.RateLimiting.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public FixedWindowRateLimiter(System.Threading.RateLimiting.FixedWindowRateLimit
2929
public override System.TimeSpan? IdleDuration { get { throw null; } }
3030
public override bool IsAutoReplenishing { get { throw null; } }
3131
public override System.TimeSpan ReplenishmentPeriod { get { throw null; } }
32-
protected override System.Threading.Tasks.ValueTask<System.Threading.RateLimiting.RateLimitLease> AcquireAsyncCore(int requestCount, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
33-
protected override System.Threading.RateLimiting.RateLimitLease AttemptAcquireCore(int requestCount) { throw null; }
32+
protected override System.Threading.Tasks.ValueTask<System.Threading.RateLimiting.RateLimitLease> AcquireAsyncCore(int permitCount, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
33+
protected override System.Threading.RateLimiting.RateLimitLease AttemptAcquireCore(int permitCount) { throw null; }
3434
protected override void Dispose(bool disposing) { }
3535
protected override System.Threading.Tasks.ValueTask DisposeAsyncCore() { throw null; }
3636
public override System.Threading.RateLimiting.RateLimiterStatistics? GetStatistics() { throw null; }
@@ -150,8 +150,8 @@ public SlidingWindowRateLimiter(System.Threading.RateLimiting.SlidingWindowRateL
150150
public override System.TimeSpan? IdleDuration { get { throw null; } }
151151
public override bool IsAutoReplenishing { get { throw null; } }
152152
public override System.TimeSpan ReplenishmentPeriod { get { throw null; } }
153-
protected override System.Threading.Tasks.ValueTask<System.Threading.RateLimiting.RateLimitLease> AcquireAsyncCore(int requestCount, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
154-
protected override System.Threading.RateLimiting.RateLimitLease AttemptAcquireCore(int requestCount) { throw null; }
153+
protected override System.Threading.Tasks.ValueTask<System.Threading.RateLimiting.RateLimitLease> AcquireAsyncCore(int permitCount, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
154+
protected override System.Threading.RateLimiting.RateLimitLease AttemptAcquireCore(int permitCount) { throw null; }
155155
protected override void Dispose(bool disposing) { }
156156
protected override System.Threading.Tasks.ValueTask DisposeAsyncCore() { throw null; }
157157
public override System.Threading.RateLimiting.RateLimiterStatistics? GetStatistics() { throw null; }

src/libraries/System.Threading.RateLimiting/src/System/Threading/RateLimiting/FixedWindowRateLimiter.cs

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace System.Threading.RateLimiting
1313
/// </summary>
1414
public sealed class FixedWindowRateLimiter : ReplenishingRateLimiter
1515
{
16-
private int _requestCount;
16+
private int _permitCount;
1717
private int _queueCount;
1818
private long _lastReplenishmentTick;
1919
private long? _idleSince;
@@ -73,7 +73,7 @@ public FixedWindowRateLimiter(FixedWindowRateLimiterOptions options)
7373
AutoReplenishment = options.AutoReplenishment
7474
};
7575

76-
_requestCount = options.PermitLimit;
76+
_permitCount = options.PermitLimit;
7777

7878
_idleSince = _lastReplenishmentTick = Stopwatch.GetTimestamp();
7979

@@ -89,80 +89,80 @@ public FixedWindowRateLimiter(FixedWindowRateLimiterOptions options)
8989
ThrowIfDisposed();
9090
return new RateLimiterStatistics()
9191
{
92-
CurrentAvailablePermits = _requestCount,
92+
CurrentAvailablePermits = _permitCount,
9393
CurrentQueuedCount = _queueCount,
9494
TotalFailedLeases = Interlocked.Read(ref _failedLeasesCount),
9595
TotalSuccessfulLeases = Interlocked.Read(ref _successfulLeasesCount),
9696
};
9797
}
9898

9999
/// <inheritdoc/>
100-
protected override RateLimitLease AttemptAcquireCore(int requestCount)
100+
protected override RateLimitLease AttemptAcquireCore(int permitCount)
101101
{
102102
// These amounts of resources can never be acquired
103103
// Raises a PermitLimitExceeded ArgumentOutOFRangeException
104-
if (requestCount > _options.PermitLimit)
104+
if (permitCount > _options.PermitLimit)
105105
{
106-
throw new ArgumentOutOfRangeException(nameof(requestCount), requestCount, SR.Format(SR.PermitLimitExceeded, requestCount, _options.PermitLimit));
106+
throw new ArgumentOutOfRangeException(nameof(permitCount), permitCount, SR.Format(SR.PermitLimitExceeded, permitCount, _options.PermitLimit));
107107
}
108108

109109
// Return SuccessfulLease or FailedLease depending to indicate limiter state
110-
if (requestCount == 0 && !_disposed)
110+
if (permitCount == 0 && !_disposed)
111111
{
112112
// Check if the requests are permitted in a window
113113
// Requests will be allowed if the total served request is less than the max allowed requests (permit limit).
114-
if (_requestCount > 0)
114+
if (_permitCount > 0)
115115
{
116116
Interlocked.Increment(ref _successfulLeasesCount);
117117
return SuccessfulLease;
118118
}
119119

120120
Interlocked.Increment(ref _failedLeasesCount);
121-
return CreateFailedWindowLease(requestCount);
121+
return CreateFailedWindowLease(permitCount);
122122
}
123123

124124
lock (Lock)
125125
{
126-
if (TryLeaseUnsynchronized(requestCount, out RateLimitLease? lease))
126+
if (TryLeaseUnsynchronized(permitCount, out RateLimitLease? lease))
127127
{
128128
return lease;
129129
}
130130

131131
Interlocked.Increment(ref _failedLeasesCount);
132-
return CreateFailedWindowLease(requestCount);
132+
return CreateFailedWindowLease(permitCount);
133133
}
134134
}
135135

136136
/// <inheritdoc/>
137-
protected override ValueTask<RateLimitLease> AcquireAsyncCore(int requestCount, CancellationToken cancellationToken = default)
137+
protected override ValueTask<RateLimitLease> AcquireAsyncCore(int permitCount, CancellationToken cancellationToken = default)
138138
{
139139
// These amounts of resources can never be acquired
140-
if (requestCount > _options.PermitLimit)
140+
if (permitCount > _options.PermitLimit)
141141
{
142-
throw new ArgumentOutOfRangeException(nameof(requestCount), requestCount, SR.Format(SR.PermitLimitExceeded, requestCount, _options.PermitLimit));
142+
throw new ArgumentOutOfRangeException(nameof(permitCount), permitCount, SR.Format(SR.PermitLimitExceeded, permitCount, _options.PermitLimit));
143143
}
144144

145145
ThrowIfDisposed();
146146

147-
// Return SuccessfulAcquisition if requestCount is 0 and resources are available
148-
if (requestCount == 0 && _requestCount > 0)
147+
// Return SuccessfulAcquisition if permitCount is 0 and resources are available
148+
if (permitCount == 0 && _permitCount > 0)
149149
{
150150
Interlocked.Increment(ref _successfulLeasesCount);
151151
return new ValueTask<RateLimitLease>(SuccessfulLease);
152152
}
153153

154154
lock (Lock)
155155
{
156-
if (TryLeaseUnsynchronized(requestCount, out RateLimitLease? lease))
156+
if (TryLeaseUnsynchronized(permitCount, out RateLimitLease? lease))
157157
{
158158
return new ValueTask<RateLimitLease>(lease);
159159
}
160160

161161
// Avoid integer overflow by using subtraction instead of addition
162162
Debug.Assert(_options.QueueLimit >= _queueCount);
163-
if (_options.QueueLimit - _queueCount < requestCount)
163+
if (_options.QueueLimit - _queueCount < permitCount)
164164
{
165-
if (_options.QueueProcessingOrder == QueueProcessingOrder.NewestFirst && requestCount <= _options.QueueLimit)
165+
if (_options.QueueProcessingOrder == QueueProcessingOrder.NewestFirst && permitCount <= _options.QueueLimit)
166166
{
167167
// remove oldest items from queue until there is space for the newest acquisition request
168168
do
@@ -179,17 +179,17 @@ protected override ValueTask<RateLimitLease> AcquireAsyncCore(int requestCount,
179179
Interlocked.Increment(ref _failedLeasesCount);
180180
}
181181
}
182-
while (_options.QueueLimit - _queueCount < requestCount);
182+
while (_options.QueueLimit - _queueCount < permitCount);
183183
}
184184
else
185185
{
186186
Interlocked.Increment(ref _failedLeasesCount);
187187
// Don't queue if queue limit reached and QueueProcessingOrder is OldestFirst
188-
return new ValueTask<RateLimitLease>(CreateFailedWindowLease(requestCount));
188+
return new ValueTask<RateLimitLease>(CreateFailedWindowLease(permitCount));
189189
}
190190
}
191191

192-
CancelQueueState tcs = new CancelQueueState(requestCount, this, cancellationToken);
192+
CancelQueueState tcs = new CancelQueueState(permitCount, this, cancellationToken);
193193
CancellationTokenRegistration ctr = default;
194194
if (cancellationToken.CanBeCanceled)
195195
{
@@ -199,32 +199,32 @@ protected override ValueTask<RateLimitLease> AcquireAsyncCore(int requestCount,
199199
}, tcs);
200200
}
201201

202-
RequestRegistration registration = new RequestRegistration(requestCount, tcs, ctr);
202+
RequestRegistration registration = new RequestRegistration(permitCount, tcs, ctr);
203203
_queue.EnqueueTail(registration);
204-
_queueCount += requestCount;
204+
_queueCount += permitCount;
205205
Debug.Assert(_queueCount <= _options.QueueLimit);
206206

207207
return new ValueTask<RateLimitLease>(registration.Tcs.Task);
208208
}
209209
}
210210

211-
private RateLimitLease CreateFailedWindowLease(int requestCount)
211+
private RateLimitLease CreateFailedWindowLease(int permitCount)
212212
{
213-
int replenishAmount = requestCount - _requestCount + _queueCount;
213+
int replenishAmount = permitCount - _permitCount + _queueCount;
214214
// can't have 0 replenish window, that would mean it should be a successful lease
215215
int replenishWindow = Math.Max(replenishAmount / _options.PermitLimit, 1);
216216

217217
return new FixedWindowLease(false, TimeSpan.FromTicks(_options.Window.Ticks * replenishWindow));
218218
}
219219

220-
private bool TryLeaseUnsynchronized(int requestCount, [NotNullWhen(true)] out RateLimitLease? lease)
220+
private bool TryLeaseUnsynchronized(int permitCount, [NotNullWhen(true)] out RateLimitLease? lease)
221221
{
222222
ThrowIfDisposed();
223223

224224
// if permitCount is 0 we want to queue it if there are no available permits
225-
if (_requestCount >= requestCount && _requestCount != 0)
225+
if (_permitCount >= permitCount && _permitCount != 0)
226226
{
227-
if (requestCount == 0)
227+
if (permitCount == 0)
228228
{
229229
Interlocked.Increment(ref _successfulLeasesCount);
230230
// Edge case where the check before the lock showed 0 available permit counters but when we got the lock, some permits were now available
@@ -237,8 +237,8 @@ private bool TryLeaseUnsynchronized(int requestCount, [NotNullWhen(true)] out Ra
237237
if (_queueCount == 0 || (_queueCount > 0 && _options.QueueProcessingOrder == QueueProcessingOrder.NewestFirst))
238238
{
239239
_idleSince = null;
240-
_requestCount -= requestCount;
241-
Debug.Assert(_requestCount >= 0);
240+
_permitCount -= permitCount;
241+
Debug.Assert(_permitCount >= 0);
242242
Interlocked.Increment(ref _successfulLeasesCount);
243243
lease = SuccessfulLease;
244244
return true;
@@ -294,15 +294,15 @@ private void ReplenishInternal(long nowTicks)
294294

295295
_lastReplenishmentTick = nowTicks;
296296

297-
int availableRequestCounters = _requestCount;
297+
int availablePermitCounters = _permitCount;
298298

299-
if (availableRequestCounters >= _options.PermitLimit)
299+
if (availablePermitCounters >= _options.PermitLimit)
300300
{
301301
// All counters available, nothing to do
302302
return;
303303
}
304304

305-
_requestCount = _options.PermitLimit;
305+
_permitCount = _options.PermitLimit;
306306

307307
// Process queued requests
308308
while (_queue.Count > 0)
@@ -312,7 +312,7 @@ private void ReplenishInternal(long nowTicks)
312312
? _queue.PeekHead()
313313
: _queue.PeekTail();
314314

315-
if (_requestCount >= nextPendingRequest.Count)
315+
if (_permitCount >= nextPendingRequest.Count)
316316
{
317317
// Request can be fulfilled
318318
nextPendingRequest =
@@ -321,13 +321,13 @@ private void ReplenishInternal(long nowTicks)
321321
: _queue.DequeueTail();
322322

323323
_queueCount -= nextPendingRequest.Count;
324-
_requestCount -= nextPendingRequest.Count;
325-
Debug.Assert(_requestCount >= 0);
324+
_permitCount -= nextPendingRequest.Count;
325+
Debug.Assert(_permitCount >= 0);
326326

327327
if (!nextPendingRequest.Tcs.TrySetResult(SuccessfulLease))
328328
{
329329
// Queued item was canceled so add count back
330-
_requestCount += nextPendingRequest.Count;
330+
_permitCount += nextPendingRequest.Count;
331331
// Updating queue count is handled by the cancellation code
332332
_queueCount += nextPendingRequest.Count;
333333
}
@@ -345,7 +345,7 @@ private void ReplenishInternal(long nowTicks)
345345
}
346346
}
347347

348-
if (_requestCount == _options.PermitLimit)
348+
if (_permitCount == _options.PermitLimit)
349349
{
350350
Debug.Assert(_idleSince is null);
351351
Debug.Assert(_queueCount == 0);
@@ -426,9 +426,9 @@ public override bool TryGetMetadata(string metadataName, out object? metadata)
426426

427427
private readonly struct RequestRegistration
428428
{
429-
public RequestRegistration(int requestCount, TaskCompletionSource<RateLimitLease> tcs, CancellationTokenRegistration cancellationTokenRegistration)
429+
public RequestRegistration(int permitCount, TaskCompletionSource<RateLimitLease> tcs, CancellationTokenRegistration cancellationTokenRegistration)
430430
{
431-
Count = requestCount;
431+
Count = permitCount;
432432
// Use VoidAsyncOperationWithData<T> instead
433433
Tcs = tcs;
434434
CancellationTokenRegistration = cancellationTokenRegistration;
@@ -443,14 +443,14 @@ public RequestRegistration(int requestCount, TaskCompletionSource<RateLimitLease
443443

444444
private sealed class CancelQueueState : TaskCompletionSource<RateLimitLease>
445445
{
446-
private readonly int _requestCount;
446+
private readonly int _permitCount;
447447
private readonly FixedWindowRateLimiter _limiter;
448448
private readonly CancellationToken _cancellationToken;
449449

450-
public CancelQueueState(int requestCount, FixedWindowRateLimiter limiter, CancellationToken cancellationToken)
450+
public CancelQueueState(int permitCount, FixedWindowRateLimiter limiter, CancellationToken cancellationToken)
451451
: base(TaskCreationOptions.RunContinuationsAsynchronously)
452452
{
453-
_requestCount = requestCount;
453+
_permitCount = permitCount;
454454
_limiter = limiter;
455455
_cancellationToken = cancellationToken;
456456
}
@@ -461,7 +461,7 @@ public CancelQueueState(int requestCount, FixedWindowRateLimiter limiter, Cancel
461461
{
462462
lock (_limiter.Lock)
463463
{
464-
_limiter._queueCount -= _requestCount;
464+
_limiter._queueCount -= _permitCount;
465465
}
466466
return true;
467467
}

0 commit comments

Comments
 (0)