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

◆ WriteAsyncMemoryCore()

async ValueTask System.IO.Compression.BrotliStream.WriteAsyncMemoryCore ( ReadOnlyMemory< byte > buffer,
CancellationToken cancellationToken,
bool isFinalBlock = false )
inlineprivate

Definition at line 163 of file BrotliStream.cs.

164 {
166 try
167 {
168 OperationStatus lastResult = OperationStatus.DestinationTooSmall;
169 while (lastResult == OperationStatus.DestinationTooSmall)
170 {
171 Memory<byte> destination = new Memory<byte>(_buffer);
172 int bytesConsumed = 0;
173 int bytesWritten = 0;
174 lastResult = _encoder.Compress(buffer, destination, out bytesConsumed, out bytesWritten, isFinalBlock);
175 if (lastResult == OperationStatus.InvalidData)
176 {
178 }
179 if (bytesConsumed > 0)
180 {
181 buffer = buffer.Slice(bytesConsumed);
182 }
183 if (bytesWritten > 0)
184 {
185 await _stream.WriteAsync(new ReadOnlyMemory<byte>(_buffer, 0, bytesWritten), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
186 }
187 }
188 }
189 finally
190 {
192 }
193 }
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 Compress(ReadOnlyMemory< byte > source, Memory< byte > destination, out int bytesConsumed, out int bytesWritten, bool isFinalBlock)

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

Referenced by System.IO.Compression.BrotliStream.DisposeAsync(), and System.IO.Compression.BrotliStream.WriteAsync().