@@ -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