Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ChannelReader.cs
Go to the documentation of this file.
5
7
8public abstract class ChannelReader<T>
9{
11
12 public virtual bool CanCount => false;
13
14 public virtual bool CanPeek => false;
15
16 public virtual int Count
17 {
18 get
19 {
20 throw new NotSupportedException();
21 }
22 }
23
24 public abstract bool TryRead([MaybeNullWhen(false)] out T item);
25
26 public virtual bool TryPeek([MaybeNullWhen(false)] out T item)
27 {
28 item = default(T);
29 return false;
30 }
31
33
35 {
36 if (cancellationToken.IsCancellationRequested)
37 {
39 }
40 try
41 {
42 if (TryRead(out var item))
43 {
44 return new ValueTask<T>(item);
45 }
46 }
48 {
49 return new ValueTask<T>(Task.FromException<T>(ex));
50 }
51 return ReadAsyncCore(cancellationToken);
53 {
54 T item2;
55 do
56 {
57 if (!(await WaitToReadAsync(ct).ConfigureAwait(continueOnCapturedContext: false)))
58 {
59 throw new ChannelClosedException();
60 }
61 }
62 while (!TryRead(out item2));
63 return item2;
64 }
65 }
66
68 {
70 {
71 T item;
72 while (TryRead(out item))
73 {
74 yield return item;
75 }
76 }
77 }
78}
virtual ValueTask< T > ReadAsync(CancellationToken cancellationToken=default(CancellationToken))
ValueTask< bool > WaitToReadAsync(CancellationToken cancellationToken=default(CancellationToken))
virtual async IAsyncEnumerable< T > ReadAllAsync([EnumeratorCancellation] CancellationToken cancellationToken=default(CancellationToken))
virtual bool TryPeek([MaybeNullWhen(false)] out T item)
bool TryRead([MaybeNullWhen(false)] out T item)
static Task FromException(Exception exception)
Definition Task.cs:3341
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363