#if CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6)) #pragma warning disable CS1591 using System; using System.Runtime.CompilerServices; namespace UniRx.Async { public enum UniTaskStatus { /// The operation has not yet completed. Pending = 0, /// The operation completed successfully. Succeeded = 1, /// The operation completed with an error. Faulted = 2, /// The operation completed due to cancellation. Canceled = 3 } // similar as IValueTaskSource public interface IUniTaskSource { UniTaskStatus GetStatus(short token); void OnCompleted(Action continuation, object state, short token); void GetResult(short token); UniTaskStatus UnsafeGetStatus(); // only for debug use. } public interface IUniTaskSource : IUniTaskSource { new T GetResult(short token); } public static class UniTaskStatusExtensions { /// status != Pending. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsCompleted(this UniTaskStatus status) { return status != UniTaskStatus.Pending; } /// status == Succeeded. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsCompletedSuccessfully(this UniTaskStatus status) { return status == UniTaskStatus.Succeeded; } /// status == Canceled. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsCanceled(this UniTaskStatus status) { return status == UniTaskStatus.Canceled; } /// status == Faulted. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsFaulted(this UniTaskStatus status) { return status == UniTaskStatus.Faulted; } } } #endif