Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ChannelUtilities.cs
Go to the documentation of this file.
3
5
6internal static class ChannelUtilities
7{
8 internal static readonly Exception s_doneWritingSentinel = new Exception("s_doneWritingSentinel");
9
10 internal static readonly Task<bool> s_trueTask = Task.FromResult(result: true);
11
12 internal static readonly Task<bool> s_falseTask = Task.FromResult(result: false);
13
14 internal static readonly Task s_neverCompletingTask = new TaskCompletionSource<bool>().Task;
15
16 internal static void Complete(TaskCompletionSource tcs, Exception error = null)
17 {
19 {
20 tcs.TrySetCanceled(ex.CancellationToken);
21 }
22 else if (error != null && error != s_doneWritingSentinel)
23 {
24 tcs.TrySetException(error);
25 }
26 else
27 {
28 tcs.TrySetResult();
29 }
30 }
31
37
39 {
41 if (asyncOperation == null)
42 {
43 waiter.Next = waiter;
44 }
45 else
46 {
47 waiter.Next = asyncOperation.Next;
48 asyncOperation.Next = waiter;
49 }
50 tail = waiter;
51 }
52
53 internal static void WakeUpWaiters(ref AsyncOperation<bool> listTail, bool result, Exception error = null)
54 {
56 if (asyncOperation != null)
57 {
58 listTail = null;
61 do
62 {
64 asyncOperation2.Next = null;
65 bool flag = ((error != null) ? asyncOperation2.TrySetException(error) : asyncOperation2.TrySetResult(result));
67 }
68 while (asyncOperation2 != next);
69 }
70 }
71
73 {
74 while (!operations.IsEmpty)
75 {
76 operations.DequeueHead().TrySetException(error);
77 }
78 }
79
81 {
82 if (!(inner is OperationCanceledException))
83 {
84 if (inner == null || inner == s_doneWritingSentinel)
85 {
86 return new ChannelClosedException();
87 }
88 return new ChannelClosedException(inner);
89 }
90 return inner;
91 }
92}
static void FailOperations< T, TInner >(Deque< T > operations, Exception error)
static void QueueWaiter(ref AsyncOperation< bool > tail, AsyncOperation< bool > waiter)
static readonly Exception s_doneWritingSentinel
static ValueTask< T > GetInvalidCompletionValueTask< T >(Exception error)
static readonly Task< bool > s_falseTask
static void Complete(TaskCompletionSource tcs, Exception error=null)
static void WakeUpWaiters(ref AsyncOperation< bool > listTail, bool result, Exception error=null)
static readonly Task< bool > s_trueTask
static Exception CreateInvalidCompletionException(Exception inner=null)
static Task FromException(Exception exception)
Definition Task.cs:3341
static Task FromCanceled(CancellationToken cancellationToken)
Definition Task.cs:3363