Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AsyncValueTaskMethodBuilder.cs
Go to the documentation of this file.
3
5
6[StructLayout(LayoutKind.Auto)]
7public struct AsyncValueTaskMethodBuilder
8{
10
12
14 {
15 get
16 {
18 {
19 return default(ValueTask);
20 }
22 return new ValueTask(task);
23 }
24 }
25
27
29 {
30 return default(AsyncValueTaskMethodBuilder);
31 }
32
33 [MethodImpl(MethodImplOptions.AggressiveInlining)]
34 public void Start<TStateMachine>(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine
35 {
37 }
38
43
44 public void SetResult()
45 {
46 if (m_task == null)
47 {
49 }
50 else
51 {
53 }
54 }
55
60
61 public void AwaitOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine
62 {
63 AsyncTaskMethodBuilder<VoidTaskResult>.AwaitOnCompleted(ref awaiter, ref stateMachine, ref m_task);
64 }
65
66 [MethodImpl(MethodImplOptions.AggressiveInlining)]
67 public void AwaitUnsafeOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine
68 {
69 AsyncTaskMethodBuilder<VoidTaskResult>.AwaitUnsafeOnCompleted(ref awaiter, ref stateMachine, ref m_task);
70 }
71}
72[StructLayout(LayoutKind.Auto)]
74{
75 internal static readonly Task<TResult> s_syncSuccessSentinel = new Task<TResult>(default(TResult));
76
78
80
82 {
83 get
84 {
86 {
87 return new ValueTask<TResult>(_result);
88 }
90 return new ValueTask<TResult>(task);
91 }
92 }
93
95
100
101 [MethodImpl(MethodImplOptions.AggressiveInlining)]
102 public void Start<TStateMachine>(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine
103 {
105 }
106
111
112 public void SetResult(TResult result)
113 {
114 if (m_task == null)
115 {
116 _result = result;
118 }
119 else
120 {
122 }
123 }
124
129
130 public void AwaitOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine
131 {
132 AsyncTaskMethodBuilder<TResult>.AwaitOnCompleted(ref awaiter, ref stateMachine, ref m_task);
133 }
134
135 [MethodImpl(MethodImplOptions.AggressiveInlining)]
136 public void AwaitUnsafeOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine
137 {
138 AsyncTaskMethodBuilder<TResult>.AwaitUnsafeOnCompleted(ref awaiter, ref stateMachine, ref m_task);
139 }
140}
static void SetStateMachine(IAsyncStateMachine stateMachine, Task task)
static void SetExistingTaskResult(Task< TResult > task, TResult result)
void AwaitOnCompleted< TAwaiter, TStateMachine >(ref TAwaiter awaiter, ref TStateMachine stateMachine)
void AwaitUnsafeOnCompleted< TAwaiter, TStateMachine >(ref TAwaiter awaiter, ref TStateMachine stateMachine)