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

◆ ReadAsync() [3/3]

virtual ValueTask< int > System.IO.Stream.ReadAsync ( Memory< byte > buffer,
CancellationToken cancellationToken = default(CancellationToken) )
inlinevirtualinherited

Reimplemented in System.IO.IsolatedStorage.IsolatedStorageFileStream, System.Net.Http.DecompressionHandler.DeflateDecompressedContent.ZLibOrDeflateStream.PeekFirstByteReadStream, System.Net.Http.DecompressionHandler.DeflateDecompressedContent.ZLibOrDeflateStream, System.Net.Http.EmptyReadStream, System.Net.Http.Http2Connection.Http2Stream.Http2WriteStream, System.Net.Http.Http3RequestStream.Http3ReadStream, System.Net.Http.Http3RequestStream.Http3WriteStream, System.Net.Http.HttpBaseStream, System.Net.Http.HttpConnection.ChunkedEncodingReadStream, System.Net.Http.HttpConnection.ConnectionCloseReadStream, System.Net.Http.HttpConnection.ContentLengthReadStream, System.Net.Http.HttpConnection.HttpContentWriteStream, System.Net.Http.HttpConnection.RawConnectionStream, System.Net.Sockets.NetworkStream, System.IO.Stream.NullStream, System.Text.TranscodingStream, System.IO.Compression.BrotliStream, System.IO.Compression.DeflateManagedStream, System.IO.Compression.DeflateStream, System.IO.Compression.GZipStream, System.IO.Compression.SubReadStream, System.IO.Compression.WrappedStream, System.IO.Compression.ZLibStream, System.IO.Pipes.PipeStream, System.IO.DelegatingStream, System.IO.ReadOnlyMemoryStream, System.Net.Http.MultipartContent.ContentReadStream, System.Net.DelegatedStream, System.Net.Quic.QuicStream, System.Net.NetworkStreamWrapper, System.Net.Security.NegotiateStream, System.Net.Security.SslStream, System.IO.DelegatingStream, System.IO.Strategies.BufferedFileStreamStrategy, System.IO.Strategies.DerivedFileStreamStrategy, System.IO.Strategies.Net5CompatFileStreamStrategy, System.IO.BufferedStream, System.IO.FileStream, System.IO.MemoryStream, System.IO.UnmanagedMemoryStream, System.IO.UnmanagedMemoryStreamWrapper, System.Security.Cryptography.CryptoStream, System.Net.Http.Http2Connection.Http2Stream.Http2ReadStream, and System.IO.Strategies.OSFileStreamStrategy.

Definition at line 776 of file Stream.cs.

777 {
778 if (MemoryMarshal.TryGetArray((ReadOnlyMemory<byte>)buffer, out ArraySegment<byte> segment))
779 {
780 return new ValueTask<int>(ReadAsync(segment.Array, segment.Offset, segment.Count, cancellationToken));
781 }
782 byte[] array = ArrayPool<byte>.Shared.Rent(buffer.Length);
783 return FinishReadAsync(ReadAsync(array, 0, buffer.Length, cancellationToken), array, buffer);
784 static async ValueTask<int> FinishReadAsync(Task<int> readTask, byte[] localBuffer, Memory<byte> localDestination)
785 {
786 try
787 {
788 int num = await readTask.ConfigureAwait(continueOnCapturedContext: false);
789 new ReadOnlySpan<byte>(localBuffer, 0, num).CopyTo(localDestination.Span);
790 return num;
791 }
792 finally
793 {
794 ArrayPool<byte>.Shared.Return(localBuffer);
795 }
796 }
797 }
static ArrayPool< T > Shared
Definition ArrayPool.cs:7
Task< int > ReadAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:762
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
Definition Task.cs:226

References System.array, System.buffer, System.cancellationToken, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.ReadOnlySpan< T >.CopyTo(), System.IO.Stream.ReadAsync(), System.Buffers.ArrayPool< T >.Shared, and System.Memory< T >.Span.