Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ChannelWriter.cs
Go to the documentation of this file.
2
4
5public abstract class ChannelWriter<T>
6{
7 public virtual bool TryComplete(Exception? error = null)
8 {
9 return false;
10 }
11
12 public abstract bool TryWrite(T item);
13
15
17 {
18 try
19 {
20 return cancellationToken.IsCancellationRequested ? new ValueTask(Task.FromCanceled<T>(cancellationToken)) : (TryWrite(item) ? default(ValueTask) : WriteAsyncCore(item, cancellationToken));
21 }
22 catch (Exception exception)
23 {
25 }
26 }
27
28 private async ValueTask WriteAsyncCore(T innerItem, CancellationToken ct)
29 {
30 while (await WaitToWriteAsync(ct).ConfigureAwait(continueOnCapturedContext: false))
31 {
32 if (TryWrite(innerItem))
33 {
34 return;
35 }
36 }
38 }
39
40 public void Complete(Exception? error = null)
41 {
42 if (!TryComplete(error))
43 {
45 }
46 }
47}
static Exception CreateInvalidCompletionException(Exception inner=null)
ValueTask< bool > WaitToWriteAsync(CancellationToken cancellationToken=default(CancellationToken))
virtual bool TryComplete(Exception? error=null)
void Complete(Exception? error=null)
async ValueTask WriteAsyncCore(T innerItem, CancellationToken ct)
virtual ValueTask WriteAsync(T item, CancellationToken cancellationToken=default(CancellationToken))
static Task FromException(Exception exception)
Definition Task.cs:3341
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363