bool TryReturn() { core.Reset(); TaskTracker.RemoveTracking(this); handle = default; progress = default; cancellationToken = default; return(pool.TryPush(this)); }
internal void MarkHandled() { if (!handled) { handled = true; core.MarkHandled(); TaskTracker.RemoveTracking(this); } }
bool TryReturn() { TaskTracker.RemoveTracking(this); core.Reset(); asyncOperation = default; progress = default; cancellationToken = default; return(pool.TryPush(this)); }
bool TryReturn() { TaskTracker.RemoveTracking(this); core.Reset(); currentFrameCount = default; delayFrameCount = default; cancellationToken = default; return(pool.TryPush(this)); }
bool TryReturn() { TaskTracker.RemoveTracking(this); core.Reset(); delayFrameTimeSpan = default; elapsed = default; cancellationToken = default; return(pool.TryPush(this)); }
public static AutoResetUniTaskCompletionSource Create() { if (!pool.TryPop(out var result)) { result = new AutoResetUniTaskCompletionSource(); } TaskTracker.TrackActiveTask(result, 2); return(result); }
public UniTask DisposeAsync() { if (!isDisposed) { isDisposed = true; TaskTracker.RemoveTracking(this); completionSource.TrySetCanceled(cancellationToken); parent.triggerEvent.Remove(this); } return(default);
bool TryReturn() { TaskTracker.RemoveTracking(this); core.Reset(); cancellationTokenRegistration.Dispose(); cancellationTokenRegistration = default; parent.triggerEvent.Remove(this); parent = null; cancellationToken = default; return(pool.TryPush(this)); }
bool TryReturn() { TaskTracker.RemoveTracking(this); core.Reset(); tween.onUpdate = originalUpdateAction; tween.onKill = null; tween = default; cancellationToken = default; originalUpdateAction = default; return(pool.TryPush(this)); }
bool TryReturn() { TaskTracker.RemoveTracking(this); core.Reset(); target = default; currentValue = default; monitorFunction = default; equalityComparer = default; cancellationToken = default; return(pool.TryPush(this)); }
public void GetResult(short token) { try { TaskTracker.RemoveTracking(this); core.GetResult(token); } finally { pool.TryReturn(this); } }
// Cancellation is not supported. public static JobHandlePromise Create(JobHandle jobHandle, out short token) { // not use pool. var result = new JobHandlePromise(); result.jobHandle = jobHandle; TaskTracker.TrackActiveTask(result, 3); token = result.core.Version; return(result); }
public UniTask DisposeAsync() { if (!isDisposed) { isDisposed = true; TaskTracker.RemoveTracking(this); registration1.Dispose(); registration2.Dispose(); unityEvent.RemoveListener(unityAction); } return(default);
public UnityWebRequest GetResult(short token) { try { TaskTracker.RemoveTracking(this); return(core.GetResult(token)); } finally { pool.TryReturn(this); } }
public void SingalCompleted(Exception error) { if (error != null) { TaskTracker.RemoveTracking(this); core.TrySetException(error); } else { TaskTracker.RemoveTracking(this); core.TrySetResult(false); } }
public AssetBundle GetResult(short token) { try { TaskTracker.RemoveTracking(this); return(core.GetResult(token)); } finally { pool.TryReturn(this); } }
public Enumerator(AsyncReactiveProperty <T> parent, CancellationToken cancellationToken, bool publishCurrentValue) { this.parent = parent; this.cancellationToken = cancellationToken; this.firstCall = publishCurrentValue; parent.triggerEvent.Add(this); TaskTracker.TrackActiveTask(this, 3); if (cancellationToken.CanBeCanceled) { cancellationTokenRegistration = cancellationToken.RegisterWithoutCaptureExecutionContext(cancellationCallback, this); } }
public void Dispose() { if (!isDisposed) { isDisposed = true; TaskTracker.RemoveTracking(this); registration.Dispose(); if (unityEvent != null) { unityEvent.RemoveListener(action); } core.TrySetCanceled(cancellationToken); } }
public static IUniTaskSource Create(CancellationToken cancellationToken, PlayerLoopTiming timing, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } var result = pool.TryRent() ?? new WaitUntilCanceledPromise(); result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }
UniTaskCompletionSourceCore <T[]> core; // don't reset(called after GetResult, will invoke TrySetException.) public WhenAllPromise(UniTask <T>[] tasks, int tasksLength) { TaskTracker.TrackActiveTask(this, 3); this.completeCount = 0; if (tasksLength == 0) { this.result = Array.Empty <T>(); core.TrySetResult(result); return; } this.result = new T[tasksLength]; for (int i = 0; i < tasksLength; i++) { UniTask <T> .Awaiter awaiter; try { awaiter = tasks[i].GetAwaiter(); } catch (Exception ex) { core.TrySetException(ex); continue; } if (awaiter.IsCompleted) { TryInvokeContinuation(this, awaiter, i); } else { awaiter.SourceOnCompleted(state => { using (var t = (StateTuple <WhenAllPromise <T>, UniTask <T> .Awaiter, int>)state) { TryInvokeContinuation(t.Item1, t.Item2, t.Item3); } }, StateTuple.Create(this, awaiter, i)); } } }
public static StoppableDelayRealtimePromise Create(TimeSpan delayTimeSpan, PlayerLoopTiming timing, CancellationToken cancellationToken, out short token) { if (!pool.TryPop(out var result)) { result = new StoppableDelayRealtimePromise(); } result.stopwatch = ValueStopwatch.StartNew(); result.delayTimeSpanTicks = delayTimeSpan.Ticks; result.cancellationToken = cancellationToken; result.externalStop = false; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }
bool TryReturn() { TaskTracker.RemoveTracking(this); core.Reset(); tween.onUpdate = originalUpdateAction; switch (callbackType) { case CallbackType.Kill: tween.onKill = originalCompleteAction; break; case CallbackType.Complete: tween.onComplete = originalCompleteAction; break; case CallbackType.Pause: tween.onPause = originalCompleteAction; break; case CallbackType.Play: tween.onPlay = originalCompleteAction; break; case CallbackType.Rewind: tween.onRewind = originalCompleteAction; break; case CallbackType.StepComplete: tween.onStepComplete = originalCompleteAction; break; default: break; } tween = default; cancellationToken = default; originalUpdateAction = default; originalCompleteAction = default; return(pool.TryPush(this)); }
public static IUniTaskSource Create(Tween tween, TweenCancelBehaviour cancelBehaviour, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } var result = pool.TryRent() ?? new TweenConfiguredSource(); result.tween = tween; result.cancelBehaviour = cancelBehaviour; result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); result.RegisterEvent(); token = result.core.Version; return(result); }
public static IUniTaskSource Create(AsyncOperation asyncOperation, PlayerLoopTiming timing, IProgress <float> progress, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } var result = pool.TryRent() ?? new AsyncOperationConfiguredSource(); result.asyncOperation = asyncOperation; result.progress = progress; result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }
public static IUniTaskSource Create(TimeSpan delayFrameTimeSpan, PlayerLoopTiming timing, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } var result = pool.TryRent() ?? new DelayIgnoreTimeScalePromise(); result.elapsed = 0.0f; result.delayFrameTimeSpan = (float)delayFrameTimeSpan.TotalSeconds; result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }
public static IUniTaskSource Create(IEnumerator innerEnumerator, PlayerLoopTiming timing, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } if (!pool.TryPop(out var result)) { result = new EnumeratorPromise(); } TaskTracker.TrackActiveTask(result, 3); result.innerEnumerator = ConsumeEnumerator(innerEnumerator); result.cancellationToken = cancellationToken; PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }
public static IUniTaskSource Create(MonoBehaviour coroutineRunner, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } if (!pool.TryPop(out var result)) { result = new WaitForEndOfFramePromise(); } result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); coroutineRunner.StartCoroutine(result); token = result.core.Version; return(result); }
public static IUniTaskSource <AsyncGPUReadbackRequest> Create(AsyncGPUReadbackRequest asyncOperation, PlayerLoopTiming timing, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource <AsyncGPUReadbackRequest> .CreateFromCanceled(cancellationToken, out token)); } if (!pool.TryPop(out var result)) { result = new AsyncGPUReadbackRequestAwaiterConfiguredSource(); } result.asyncOperation = asyncOperation; result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }
public static IUniTaskSource Create(int delayFrameCount, PlayerLoopTiming timing, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } if (!pool.TryPop(out var result)) { result = new DelayFramePromise(); } result.delayFrameCount = delayFrameCount; result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }
public static IUniTaskSource Create(Func <bool> predicate, PlayerLoopTiming timing, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource.CreateFromCanceled(cancellationToken, out token)); } if (!pool.TryPop(out var result)) { result = new WaitUntilPromise(); } result.predicate = predicate; result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }