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

◆ SendDataAsync()

async ValueTask System.Net.Http.Http2Connection.Http2Stream.SendDataAsync ( ReadOnlyMemory< byte > buffer,
CancellationToken cancellationToken )
inlineprivate

Definition at line 1312 of file Http2Connection.cs.

1313 {
1315 try
1316 {
1317 while (buffer.Length > 0)
1318 {
1319 int num = -1;
1320 bool flush = false;
1322 {
1323 if (_availableCredit > 0)
1324 {
1325 num = Math.Min(buffer.Length, _availableCredit);
1326 _availableCredit -= num;
1327 if (_availableCredit == 0)
1328 {
1329 flush = true;
1330 }
1331 }
1332 else
1333 {
1334 if (_creditWaiter == null)
1335 {
1337 }
1338 else
1339 {
1341 }
1342 _creditWaiter.Amount = buffer.Length;
1343 }
1344 }
1345 if (num == -1)
1346 {
1349 {
1350 if (_availableCredit == 0)
1351 {
1352 flush = true;
1353 }
1354 }
1355 }
1357 (buffer2, buffer) = SplitBuffer(buffer, num);
1359 }
1360 }
1361 catch (OperationCanceledException ex) when (ex.CancellationToken == _requestBodyCancellationSource.Token)
1362 {
1364 {
1365 Exception resetException = _resetException;
1366 if (resetException != null)
1367 {
1368 if (_canRetry)
1369 {
1371 }
1373 }
1374 }
1375 throw;
1376 }
1377 finally
1378 {
1379 linkedRegistration.Dispose();
1380 }
1381 }
void ResetForAwait(CancellationToken cancellationToken)
ValueTask< int > AsValueTask()
CancellationTokenRegistration RegisterRequestBodyCancellation(CancellationToken cancellationToken)
readonly CancellationTokenSource _requestBodyCancellationSource
static ReadOnlyMemory< byte > ReadOnlyMemory< byte > rest SplitBuffer(ReadOnlyMemory< byte > buffer, int maxSize)
async Task SendStreamDataAsync(int streamId, ReadOnlyMemory< byte > buffer, bool finalFlush, CancellationToken cancellationToken)
static void ThrowRetry(string message, Exception innerException=null)
static void ThrowRequestAborted(Exception innerException=null)
static string net_http_request_aborted
Definition SR.cs:120
Definition SR.cs:7
ConfiguredValueTaskAwaitable ConfigureAwait(bool continueOnCapturedContext)
Definition ValueTask.cs:312

References System.Net.Http.Http2Connection.Http2Stream._availableCredit, System.Net.Http.Http2Connection.Http2Stream._canRetry, System.Net.Http.Http2Connection.Http2Stream._connection, System.Net.Http.Http2Connection.Http2Stream._creditSyncObject, System.Net.Http.Http2Connection.Http2Stream._creditWaiter, System.Net.Http.Http2Connection.Http2Stream._requestBodyCancellationSource, System.Net.Http.Http2Connection.Http2Stream._resetException, System.Net.Http.CreditWaiter.AsValueTask(), System.buffer, System.cancellationToken, System.Threading.Tasks.ValueTask< TResult >.ConfigureAwait(), System.Math.Min(), System.SR.net_http_request_aborted, System.Net.Http.Http2Connection.Http2Stream.RegisterRequestBodyCancellation(), System.Net.Http.CreditWaiter.ResetForAwait(), System.Net.Http.Http2Connection.SendStreamDataAsync(), System.Net.Http.Http2Connection.SplitBuffer(), System.Net.Http.Http2Connection.Http2Stream.StreamId, System.Net.Http.Http2Connection.Http2Stream.SyncObject, System.Net.Http.Http2Connection.ThrowRequestAborted(), System.Net.Http.Http2Connection.ThrowRetry(), and System.Threading.CancellationTokenSource.Token.

Referenced by System.Net.Http.Http2Connection.Http2Stream.Http2WriteStream.WriteAsync().