Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RequestCreditAsync()

ValueTask< int > System.Net.Http.CreditManager.RequestCreditAsync ( int amount,
CancellationToken cancellationToken )
inline

Definition at line 33 of file CreditManager.cs.

34 {
35 lock (SyncObject)
36 {
37 int num = TryRequestCreditNoLock(amount);
38 if (num > 0)
39 {
40 return new ValueTask<int>(num);
41 }
42 if (System.Net.NetEventSource.Log.IsEnabled())
43 {
44 _owner.Trace($"{_name}. requested={amount}, no credit available.", "RequestCreditAsync");
45 }
46 CreditWaiter creditWaiter = new CreditWaiter(cancellationToken);
47 creditWaiter.Amount = amount;
48 if (_waitersTail == null)
49 {
50 _waitersTail = (creditWaiter.Next = creditWaiter);
51 }
52 else
53 {
54 creditWaiter.Next = _waitersTail.Next;
55 _waitersTail.Next = creditWaiter;
56 _waitersTail = creditWaiter;
57 }
58 return creditWaiter.AsValueTask();
59 }
60 }
int TryRequestCreditNoLock(int amount)
readonly IHttpTrace _owner
ValueTask< int > AsValueTask()
static readonly System.Net.NetEventSource Log
void Trace(string message, [CallerMemberName] string memberName=null)

References System.Net.Http.CreditManager._owner, System.Net.Http.CreditManager._waitersTail, System.Net.Http.CreditWaiter.AsValueTask(), System.cancellationToken, System.Net.NetEventSource.Log, System.Net.Http.CreditWaiter.Next, System.Net.Http.CreditManager.SyncObject, System.Net.Http.IHttpTrace.Trace(), and System.Net.Http.CreditManager.TryRequestCreditNoLock().

Referenced by System.Net.Http.Http2Connection.SendStreamDataAsync().