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

◆ CopyToAsyncCore()

async Task System.IO.BufferedStream.CopyToAsyncCore ( Stream destination,
int bufferSize,
CancellationToken cancellationToken )
inlineprivate

Definition at line 879 of file BufferedStream.cs.

880 {
881 await EnsureAsyncActiveSemaphoreInitialized().WaitAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
882 try
883 {
884 int num = _readLen - _readPos;
885 if (num > 0)
886 {
887 await destination.WriteAsync(new ReadOnlyMemory<byte>(_buffer, _readPos, num), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
888 _readPos = (_readLen = 0);
889 }
890 else if (_writePos > 0)
891 {
892 await FlushWriteAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
893 }
894 await _stream.CopyToAsync(destination, bufferSize, cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
895 }
896 finally
897 {
899 }
900 }
async ValueTask FlushWriteAsync(CancellationToken cancellationToken)
SemaphoreSlim _asyncActiveSemaphore
Definition Stream.cs:490
Task CopyToAsync(Stream destination)
Definition Stream.cs:571
SemaphoreSlim EnsureAsyncActiveSemaphoreInitialized()
Definition Stream.cs:535
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
Definition Task.cs:226
ConfiguredValueTaskAwaitable ConfigureAwait(bool continueOnCapturedContext)
Definition ValueTask.cs:312

References System.IO.Stream._asyncActiveSemaphore, System.IO.BufferedStream._buffer, System.IO.BufferedStream._readLen, System.IO.BufferedStream._readPos, System.IO.BufferedStream._stream, System.IO.BufferedStream._writePos, System.cancellationToken, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.Threading.Tasks.ValueTask< TResult >.ConfigureAwait(), System.IO.Stream.CopyToAsync(), System.destination, System.IO.Stream.EnsureAsyncActiveSemaphoreInitialized(), System.IO.BufferedStream.FlushWriteAsync(), System.Threading.SemaphoreSlim.Release(), and System.Threading.SemaphoreSlim.WaitAsync().

Referenced by System.IO.BufferedStream.CopyToAsync().