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

◆ ReadAsync() [2/3]

override Task< int > System.IO.Strategies.BufferedFileStreamStrategy.ReadAsync ( byte[] buffer,
int offset,
int count,
CancellationToken cancellationToken )
inlinevirtual

Reimplemented from System.IO.Stream.

Definition at line 601 of file BufferedFileStreamStrategy.cs.

602 {
603 ValueTask<int> valueTask = ReadAsync(new Memory<byte>(buffer, offset, count), cancellationToken);
604 if (!valueTask.IsCompletedSuccessfully)
605 {
606 return valueTask.AsTask();
607 }
608 return LastSyncCompletedReadTask(valueTask.Result);
609 Task<int> LastSyncCompletedReadTask(int val)
610 {
611 Task<int> lastSyncCompletedReadTask = _lastSyncCompletedReadTask;
612 if (lastSyncCompletedReadTask != null && lastSyncCompletedReadTask.Result == val)
613 {
614 return lastSyncCompletedReadTask;
615 }
616 return _lastSyncCompletedReadTask = Task.FromResult(val);
617 }
618 }
override Task< int > ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)

References System.IO.Strategies.BufferedFileStreamStrategy._lastSyncCompletedReadTask, System.Threading.Tasks.ValueTask< TResult >.AsTask(), System.buffer, System.cancellationToken, System.count, System.Threading.Tasks.ValueTask< TResult >.IsCompletedSuccessfully, System.offset, System.IO.Strategies.BufferedFileStreamStrategy.ReadAsync(), System.Threading.Tasks.Task< TResult >.Result, and System.Threading.Tasks.ValueTask< TResult >.Result.

Referenced by System.IO.Strategies.BufferedFileStreamStrategy.BeginRead(), and System.IO.Strategies.BufferedFileStreamStrategy.ReadAsync().