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

◆ WriteAsyncInternal()

ValueTask System.IO.Strategies.Net5CompatFileStreamStrategy.WriteAsyncInternal ( ReadOnlyMemory< byte > source,
CancellationToken cancellationToken )
inlineprivate

Definition at line 1058 of file Net5CompatFileStreamStrategy.cs.

1059 {
1060 if (!CanWrite)
1061 {
1062 ThrowHelper.ThrowNotSupportedException_UnwritableStream();
1063 }
1064 bool flag = false;
1065 if (_fileHandle.CanSeek)
1066 {
1067 if (_writePos == 0)
1068 {
1069 if (_readPos < _readLength)
1070 {
1072 }
1073 _readPos = 0;
1074 _readLength = 0;
1075 }
1076 int num = _bufferLength - _writePos;
1077 if (source.Length < _bufferLength && !HasActiveBufferOperation && source.Length <= num)
1078 {
1079 source.Span.CopyTo(new Span<byte>(GetBuffer(), _writePos, source.Length));
1080 _writePos += source.Length;
1081 flag = true;
1082 if (source.Length != num)
1083 {
1084 return default(ValueTask);
1085 }
1086 }
1087 }
1088 Task task = null;
1089 if (_writePos > 0)
1090 {
1092 if (flag || task.IsFaulted || task.IsCanceled)
1093 {
1094 return new ValueTask(task);
1095 }
1096 }
1098 return new ValueTask((task == null || task.Status == TaskStatus.RanToCompletion) ? task2 : ((task2.Status == TaskStatus.RanToCompletion) ? task : Task.WhenAll(task, task2)));
1099 }
Task FlushWriteAsync(CancellationToken cancellationToken)
unsafe Task WriteAsyncInternalCore(ReadOnlyMemory< byte > source, CancellationToken cancellationToken)

References System.IO.Strategies.Net5CompatFileStreamStrategy._bufferLength, System.IO.Strategies.Net5CompatFileStreamStrategy._fileHandle, System.IO.Strategies.Net5CompatFileStreamStrategy._readLength, System.IO.Strategies.Net5CompatFileStreamStrategy._readPos, System.IO.Strategies.Net5CompatFileStreamStrategy._writePos, System.cancellationToken, Microsoft.Win32.SafeHandles.SafeFileHandle.CanSeek, System.IO.Strategies.Net5CompatFileStreamStrategy.CanWrite, System.IO.Strategies.Net5CompatFileStreamStrategy.FlushReadBuffer(), System.IO.Strategies.Net5CompatFileStreamStrategy.FlushWriteAsync(), System.IO.Strategies.Net5CompatFileStreamStrategy.GetBuffer(), System.IO.Strategies.Net5CompatFileStreamStrategy.HasActiveBufferOperation, System.source, System.task, System.ThrowHelper.ThrowNotSupportedException_UnwritableStream(), System.Threading.Tasks.Task< TResult >.WhenAll(), and System.IO.Strategies.Net5CompatFileStreamStrategy.WriteAsyncInternalCore().

Referenced by System.IO.Strategies.Net5CompatFileStreamStrategy.BeginWrite(), System.IO.Strategies.Net5CompatFileStreamStrategy.Write(), System.IO.Strategies.Net5CompatFileStreamStrategy.WriteAsync(), and System.IO.Strategies.Net5CompatFileStreamStrategy.WriteAsync().