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

◆ FlushAsync() [2/2]

override Task System.IO.Compression.DeflateStream.FlushAsync ( CancellationToken cancellationToken)
inlinevirtual

Reimplemented from System.IO.Stream.

Definition at line 383 of file DeflateStream.cs.

384 {
387 if (cancellationToken.IsCancellationRequested)
388 {
390 }
391 if (_mode == CompressionMode.Compress)
392 {
393 return Core(cancellationToken);
394 }
395 return Task.CompletedTask;
397 {
399 try
400 {
401 await WriteDeflaterOutputAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
402 bool flushSuccessful;
403 do
404 {
405 flushSuccessful = _deflater.Flush(_buffer, out var bytesRead);
406 if (flushSuccessful)
407 {
408 await _stream.WriteAsync(new ReadOnlyMemory<byte>(_buffer, 0, bytesRead), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
409 }
410 }
411 while (flushSuccessful);
412 await _stream.FlushAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
413 }
414 finally
415 {
417 }
418 }
419 }
async ValueTask WriteDeflaterOutputAsync(CancellationToken cancellationToken)
bool Flush(byte[] outputBuffer, out int bytesRead)
Definition Deflater.cs:158
Task FlushAsync()
Definition Stream.cs:669
Task WriteAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:914
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
Definition Task.cs:226
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363
static Task CompletedTask
Definition Task.cs:1120
ConfiguredValueTaskAwaitable ConfigureAwait(bool continueOnCapturedContext)
Definition ValueTask.cs:312

References System.IO.Compression.DeflateStream._buffer, System.IO.Compression.DeflateStream._deflater, System.IO.Compression.DeflateStream._mode, System.IO.Compression.DeflateStream._stream, System.IO.Compression.DeflateStream.AsyncOperationCompleting(), System.IO.Compression.DeflateStream.AsyncOperationStarting(), System.cancellationToken, System.Threading.Tasks.Task< TResult >.CompletedTask, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.Threading.Tasks.ValueTask< TResult >.ConfigureAwait(), System.IO.Compression.DeflateStream.EnsureNoActiveAsyncOperation(), System.IO.Compression.DeflateStream.EnsureNotDisposed(), System.IO.Compression.Deflater.Flush(), System.IO.Stream.FlushAsync(), System.Threading.Tasks.Task< TResult >.FromCanceled(), System.IO.Stream.WriteAsync(), and System.IO.Compression.DeflateStream.WriteDeflaterOutputAsync().

Referenced by System.IO.Compression.GZipStream.FlushAsync(), and System.IO.Compression.ZLibStream.FlushAsync().