Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
/ corefx Public archive

Commit

Permalink
Feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
benaadams committed Jul 14, 2019
1 parent 0085842 commit 1135099
Showing 1 changed file with 4 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,7 @@ private CancellationTokenSource InternalTokenSource
{
lock (_lock)
{
if (_internalTokenSource == null)
{
_internalTokenSource = new CancellationTokenSource();
}
return _internalTokenSource;
return (_internalTokenSource ??= new CancellationTokenSource());
}
}
}
Expand Down Expand Up @@ -249,7 +245,7 @@ public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationTo
{
isAsync = true;
AsyncReader asyncReader = (_asyncReader ??= new AsyncReader(this));
return asyncReader.CompleteReadAsync(resultTask, tokenSource, cancellationToken, reg);
return asyncReader.CompleteReadAsync(resultTask, cancellationToken, reg);
}

Debug.Assert(length + _readTail.End <= _readTail.AvailableMemory.Length);
Expand Down Expand Up @@ -425,7 +421,6 @@ private class AsyncReader : IValueTaskSource<ReadResult>
private ManualResetValueTaskSourceCore<ReadResult> _mrvts;

private ValueTaskAwaiter<int> _readAwaiter;
private CancellationTokenSource _tokenSource;
private CancellationToken _cancellationToken;
private CancellationTokenRegistration _reg;

Expand All @@ -435,11 +430,10 @@ public AsyncReader(StreamPipeReader streamPipeReader)
_onCompletedAction = new Action(OnCompleted);
}

public ValueTask<ReadResult> CompleteReadAsync(ValueTask<int> task, CancellationTokenSource tokenSource, CancellationToken cancellationToken, CancellationTokenRegistration reg)
public ValueTask<ReadResult> CompleteReadAsync(ValueTask<int> task, CancellationToken cancellationToken, CancellationTokenRegistration reg)
{
Debug.Assert(_reader._readInProgress, "Read not in progress");

_tokenSource = tokenSource;
_cancellationToken = cancellationToken;
_reg = reg;

Expand Down Expand Up @@ -469,7 +463,7 @@ private void OnCompleted()
catch (OperationCanceledException oce)
{
_reader.ClearCancellationToken();
if (_tokenSource.IsCancellationRequested && !_cancellationToken.IsCancellationRequested)
if (_reader.InternalTokenSource.IsCancellationRequested && !_cancellationToken.IsCancellationRequested)
{
// Catch cancellation and translate it into setting isCanceled = true
_mrvts.SetResult(new ReadResult(_reader.GetCurrentReadOnlySequence(), isCanceled: true, _reader._isStreamCompleted));
Expand All @@ -495,7 +489,6 @@ ReadResult IValueTaskSource<ReadResult>.GetResult(short token)
ValidateReading();
ReadResult result = _mrvts.GetResult(token);

_tokenSource = null;
_cancellationToken = default;
_readAwaiter = default;
_mrvts.Reset();
Expand Down

0 comments on commit 1135099

Please sign in to comment.