view Implab/IDeferred.cs @ 207:558f34b2fb50 v2

added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()' added Safe.Dispose(IEnumerable) added PromiseExtensions.CancellationPoint to add a cancellation point to the chain of promises added IPromise<T> PromiseExtensions.Then<T>(this IPromise<T> that, Action<T> success) overloads added PromiseExtensions.Error() overloads to handle a error or(and) a cancellation
author cin
date Wed, 09 Nov 2016 12:03:22 +0300
parents 706fccb85524
children fa6cbf4d8841
line wrap: on
line source

using System;

namespace Implab {
    /// <summary>
    /// Deferred result, usually used by asynchronous services as the service part of the promise.
    /// </summary>
    public interface IDeferred : ICancellationToken {

        void Resolve();

        /// <summary>
        /// Reject the promise with the specified error.
        /// </summary>
        /// <param name="error">The reason why the promise is rejected.</param>
        /// <remarks>
        /// Some exceptions are treated in a special case: 
        /// <see cref="OperationCanceledException"/> is interpreted as call to <see cref="Cancel()"/> method,
        /// and <see cref="PromiseTransientException"/> is always unwrapped and its
        /// <see cref="PromiseTransientException.InnerException"> is used as the reason to reject promise.
        /// </remarks>
        void Reject(Exception error);
    }
}