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

◆ FlushAsyncCore()

async Task System.IO.Compression.BrotliStream.FlushAsyncCore ( CancellationToken cancellationToken)
inlineprivate

Definition at line 234 of file BrotliStream.cs.

235 {
237 try
238 {
239 if (_encoder._state == null || _encoder._state.IsClosed)
240 {
241 return;
242 }
243 OperationStatus lastResult = OperationStatus.DestinationTooSmall;
244 while (lastResult == OperationStatus.DestinationTooSmall)
245 {
246 Memory<byte> destination = new Memory<byte>(_buffer);
247 int bytesWritten = 0;
248 lastResult = _encoder.Flush(destination, out bytesWritten);
249 if (lastResult == OperationStatus.InvalidData)
250 {
251 throw new InvalidDataException(System.SR.BrotliStream_Compress_InvalidData);
252 }
253 if (bytesWritten > 0)
254 {
255 await _stream.WriteAsync(destination.Slice(0, bytesWritten), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
256 }
257 }
258 await _stream.FlushAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
259 }
260 finally
261 {
263 }
264 }
Task FlushAsync()
Definition Stream.cs:669
Task WriteAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:914
static string BrotliStream_Compress_InvalidData
Definition SR.cs:40
Definition SR.cs:7
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
Definition Task.cs:226
OperationStatus Flush(Memory< byte > destination, out int bytesWritten)
SafeBrotliEncoderHandle _state

References System.IO.Compression.BrotliStream._buffer, System.IO.Compression.BrotliStream._encoder, System.IO.Compression.BrotliEncoder._state, System.IO.Compression.BrotliStream._stream, System.IO.Compression.BrotliStream.AsyncOperationCompleting(), System.IO.Compression.BrotliStream.AsyncOperationStarting(), System.SR.BrotliStream_Compress_InvalidData, System.cancellationToken, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.destination, System.IO.Compression.BrotliEncoder.Flush(), System.IO.Stream.FlushAsync(), and System.IO.Stream.WriteAsync().

Referenced by System.IO.Compression.BrotliStream.FlushAsync().