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

◆ WriteAsync() [3/3]

override ValueTask System.IO.Strategies.BufferedFileStreamStrategy.WriteAsync ( ReadOnlyMemory< byte > buffer,
CancellationToken cancellationToken = default(CancellationToken) )
inlinevirtual

Reimplemented from System.IO.Stream.

Definition at line 797 of file BufferedFileStreamStrategy.cs.

798 {
799 if (cancellationToken.IsCancellationRequested)
800 {
802 }
804 if (!_strategy.CanSeek)
805 {
807 }
809 Task task = semaphoreSlim.WaitAsync(cancellationToken);
810 if (task.IsCompletedSuccessfully && _readPos == _readLen)
811 {
812 bool flag = true;
813 try
814 {
815 if (_writePos == 0 && buffer.Length >= _bufferSize)
816 {
818 }
819 if (_bufferSize - _writePos >= buffer.Length)
820 {
822 buffer.Span.CopyTo(_buffer.AsSpan(_writePos));
823 _writePos += buffer.Length;
824 return default(ValueTask);
825 }
826 flag = false;
827 }
828 finally
829 {
830 if (flag)
831 {
832 semaphoreSlim.Release();
833 }
834 }
835 }
837 }
async ValueTask WriteToNonSeekableAsync(ReadOnlyMemory< byte > source, CancellationToken cancellationToken)
ValueTask WriteAsyncSlowPath(Task semaphoreLockTask, ReadOnlyMemory< byte > source, CancellationToken cancellationToken)
Task WriteAsync(byte[] buffer, int offset, int count)
Definition Stream.cs:914
SemaphoreSlim EnsureAsyncActiveSemaphoreInitialized()
Definition Stream.cs:535
static ValueTask FromCanceled(CancellationToken cancellationToken)
Definition ValueTask.cs:180

References System.IO.Strategies.BufferedFileStreamStrategy._buffer, System.IO.Strategies.BufferedFileStreamStrategy._bufferSize, System.IO.Strategies.BufferedFileStreamStrategy._readLen, System.IO.Strategies.BufferedFileStreamStrategy._readPos, System.IO.Strategies.BufferedFileStreamStrategy._strategy, System.IO.Strategies.BufferedFileStreamStrategy._writePos, System.buffer, System.cancellationToken, System.IO.Stream.CanSeek, System.IO.Stream.EnsureAsyncActiveSemaphoreInitialized(), System.IO.Strategies.BufferedFileStreamStrategy.EnsureBufferAllocated(), System.IO.Strategies.BufferedFileStreamStrategy.EnsureCanWrite(), System.Threading.Tasks.ValueTask< TResult >.FromCanceled(), System.Threading.SemaphoreSlim.Release(), System.task, System.Threading.SemaphoreSlim.WaitAsync(), System.IO.Stream.WriteAsync(), System.IO.Strategies.BufferedFileStreamStrategy.WriteAsyncSlowPath(), and System.IO.Strategies.BufferedFileStreamStrategy.WriteToNonSeekableAsync().