public static Routine <T> GetAwaiter <T>(this IResumer <T> resumer) { var _resumer = resumer as Resumer <T>; var resumerRoutine = Routine.Get <Routine <T> >(true); resumerRoutine.Trace(1); _resumer.routine = resumerRoutine; _resumer.id = resumerRoutine.Id; if (_resumer.WasResumed) { resumerRoutine.SetResult(_resumer.result); _resumer.Reset(); } return(resumerRoutine); }
public static Routine GetAwaiter(this IResumer resumer) { var _resumer = resumer as Resumer; Assert.IsNotNull(_resumer); var resumerRoutine = Routine.Get <Routine>(true); resumerRoutine.Trace(1); _resumer.routine = resumerRoutine; _resumer.id = resumerRoutine.Id; if (_resumer.WasResumed) { resumerRoutine.SetResult(); _resumer.Reset(); } return(resumerRoutine); }
public static CTask <T> GetAwaiter <T>(this IResumer <T> resumer) { var _resumer = resumer as Resumer <T>; Assert.IsNotNull(_resumer); var resumerRoutine = CTask.Get <CTask <T> >(true); resumerRoutine.Trace(1); _resumer.routine = resumerRoutine; _resumer.id = resumerRoutine.Id; if (_resumer.WasResumed) { resumerRoutine.SetResult(_resumer.result); _resumer.Reset(); } return(resumerRoutine); }
public override void Run(IResumer resumer) { resumer.Resume(); }
public override void Reset() { resumer = null; }
public void Throw(System.Exception error) { Assert.IsNotNull(resumer); resumer.Throw(error); resumer = null; }
public void Resume(object result = null) { Assert.IsNotNull(resumer); resumer.Resume(result); resumer = null; }
public override void Run(IResumer resumer) { Assert.IsNull(this.resumer); this.resumer = resumer; }
public abstract void Run(IResumer resumer);
/// <summary> Release a resumer to the pool. </summary> public static void ReleaseResumer <T>(IResumer <T> resumer) { (resumer as Resumer <T>).Reset(); resumerPool.Release(resumer); }
public override void Run(IResumer resumer) { newResumers.Add(resumer); }
/// <summary> /// Routine that yields until a resumer is resumed. /// Useful for using resumers in WaitForAll/WaitForAny. /// </summary> public static async CTask <T> WaitForResumer <T>(IResumer <T> resumer) { return(await resumer); }
/// <summary> /// Routine that yields until a resumer is resumed. /// Useful for using resumers in WaitForAll/WaitForAny. /// </summary> public static async CTask WaitForResumer(IResumer resumer) { await resumer; }
/// <summary> Release a resumer to the pool. </summary> public static void ReleaseResumer(IResumer resumer) { resumer.Reset(); resumerPool.Release(resumer); }
/// <summary> /// Routine that yields until a resumer is resumed. /// Useful for using resumers in WaitForAll/WaitForAny. /// </summary> public static async Routine <T> WaitForResumer <T>(IResumer <T> resumer) { return(await resumer); }
/// <summary> /// Routine that yields until a resumer is resumed. /// Useful for using resumers in WaitForAll/WaitForAny. /// </summary> public static async Routine WaitForResumer(IResumer resumer) { await resumer; }