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

◆ ReadFromNonSeekableAsync()

async ValueTask< int > System.IO.Strategies.BufferedFileStreamStrategy.ReadFromNonSeekableAsync ( Memory< byte > destination,
CancellationToken cancellationToken )
inlineprivate

Definition at line 661 of file BufferedFileStreamStrategy.cs.

662 {
663 await EnsureAsyncActiveSemaphoreInitialized().WaitAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
664 try
665 {
666 if (_readPos < _readLen)
667 {
668 int num = Math.Min(_readLen - _readPos, destination.Length);
669 new Span<byte>(_buffer, _readPos, num).CopyTo(destination.Span);
670 _readPos += num;
671 return num;
672 }
673 return await _strategy.ReadAsync(destination, cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
674 }
675 finally
676 {
678 }
679 }
Task< int > ReadAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:762
SemaphoreSlim _asyncActiveSemaphore
Definition Stream.cs:490
SemaphoreSlim EnsureAsyncActiveSemaphoreInitialized()
Definition Stream.cs:535
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
Definition Task.cs:226

References System.IO.Stream._asyncActiveSemaphore, System.IO.Strategies.BufferedFileStreamStrategy._buffer, System.IO.Strategies.BufferedFileStreamStrategy._readLen, System.IO.Strategies.BufferedFileStreamStrategy._readPos, System.IO.Strategies.BufferedFileStreamStrategy._strategy, System.cancellationToken, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.Span< T >.CopyTo(), System.destination, System.IO.Stream.EnsureAsyncActiveSemaphoreInitialized(), System.Math.Min(), System.IO.Stream.ReadAsync(), System.Threading.SemaphoreSlim.Release(), and System.Threading.SemaphoreSlim.WaitAsync().

Referenced by System.IO.Strategies.BufferedFileStreamStrategy.ReadAsync().