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

◆ WriteAsync() [3/3]

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

Reimplemented from System.IO.Stream.

Definition at line 687 of file BufferedStream.cs.

688 {
689 if (cancellationToken.IsCancellationRequested)
690 {
692 }
696 Task task = semaphoreSlim.WaitAsync(cancellationToken);
697 if (task.IsCompletedSuccessfully)
698 {
699 bool flag = true;
700 try
701 {
702 if (_writePos == 0)
703 {
705 }
706 flag = buffer.Length < _bufferSize - _writePos;
707 if (flag)
708 {
709 int num = WriteToBuffer(buffer.Span);
710 return default(ValueTask);
711 }
712 }
713 finally
714 {
715 if (flag)
716 {
717 semaphoreSlim.Release();
718 }
719 }
720 }
722 }
void WriteToBuffer(byte[] buffer, ref int offset, ref int count)
async ValueTask WriteToUnderlyingStreamAsync(ReadOnlyMemory< byte > buffer, CancellationToken cancellationToken, Task semaphoreLockTask)
SemaphoreSlim EnsureAsyncActiveSemaphoreInitialized()
Definition Stream.cs:535
static ValueTask FromCanceled(CancellationToken cancellationToken)
Definition ValueTask.cs:180

References System.IO.BufferedStream._bufferSize, System.IO.BufferedStream._writePos, System.buffer, System.cancellationToken, System.IO.BufferedStream.ClearReadBufferBeforeWrite(), System.IO.Stream.EnsureAsyncActiveSemaphoreInitialized(), System.IO.BufferedStream.EnsureCanWrite(), System.IO.BufferedStream.EnsureNotClosed(), System.Threading.Tasks.ValueTask< TResult >.FromCanceled(), System.Threading.SemaphoreSlim.Release(), System.task, System.Threading.SemaphoreSlim.WaitAsync(), System.IO.BufferedStream.WriteToBuffer(), and System.IO.BufferedStream.WriteToUnderlyingStreamAsync().