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

◆ CopyToAsyncCore()

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

Definition at line 951 of file BufferedFileStreamStrategy.cs.

952 {
953 await EnsureAsyncActiveSemaphoreInitialized().WaitAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
954 try
955 {
956 int num = _readLen - _readPos;
957 if (num > 0)
958 {
959 await destination.WriteAsync(new ReadOnlyMemory<byte>(_buffer, _readPos, num), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
960 _readPos = (_readLen = 0);
961 }
962 else if (_writePos > 0)
963 {
964 await _strategy.WriteAsync(new ReadOnlyMemory<byte>(_buffer, 0, _writePos), cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
965 _writePos = 0;
966 }
967 await _strategy.CopyToAsync(destination, bufferSize, cancellationToken).ConfigureAwait(continueOnCapturedContext: false);
968 }
969 finally
970 {
972 }
973 }
Task WriteAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:914
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

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.IO.Strategies.BufferedFileStreamStrategy._writePos, System.cancellationToken, System.Threading.Tasks.Task< TResult >.ConfigureAwait(), System.IO.Stream.CopyToAsync(), System.destination, System.IO.Stream.EnsureAsyncActiveSemaphoreInitialized(), System.Threading.SemaphoreSlim.Release(), System.Threading.SemaphoreSlim.WaitAsync(), and System.IO.Stream.WriteAsync().

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