You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.8 KiB
64 lines
1.8 KiB
using System; |
|
using System.Diagnostics; |
|
using System.Runtime.CompilerServices; |
|
using System.Security; |
|
|
|
namespace ET |
|
{ |
|
internal struct AsyncETVoidMethodBuilder |
|
{ |
|
// 1. Static Create method. |
|
[DebuggerHidden] |
|
public static AsyncETVoidMethodBuilder Create() |
|
{ |
|
AsyncETVoidMethodBuilder builder = new AsyncETVoidMethodBuilder(); |
|
return builder; |
|
} |
|
|
|
// 2. TaskLike Task property(void) |
|
[DebuggerHidden] |
|
public ETVoid Task => default; |
|
|
|
// 3. SetException |
|
[DebuggerHidden] |
|
public void SetException(Exception e) |
|
{ |
|
ETTask.ExceptionHandler.Invoke(e); |
|
} |
|
|
|
// 4. SetResult |
|
[DebuggerHidden] |
|
public void SetResult() |
|
{ |
|
// do nothing |
|
} |
|
|
|
// 5. AwaitOnCompleted |
|
[DebuggerHidden] |
|
public void AwaitOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine |
|
{ |
|
awaiter.OnCompleted(stateMachine.MoveNext); |
|
} |
|
|
|
// 6. AwaitUnsafeOnCompleted |
|
[DebuggerHidden] |
|
[SecuritySafeCritical] |
|
public void AwaitUnsafeOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine |
|
{ |
|
awaiter.UnsafeOnCompleted(stateMachine.MoveNext); |
|
} |
|
|
|
// 7. Start |
|
[DebuggerHidden] |
|
public void Start<TStateMachine>(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine |
|
{ |
|
stateMachine.MoveNext(); |
|
} |
|
|
|
// 8. SetStateMachine |
|
[DebuggerHidden] |
|
public void SetStateMachine(IAsyncStateMachine stateMachine) |
|
{ |
|
} |
|
} |
|
} |