view Implab/IDeferred.cs @ 144:8c0b95069066 v2

DRAFT: refactoring
author cin
date Fri, 06 Mar 2015 15:45:26 +0300
parents 16f926ee499d
children 706fccb85524
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 : ICancelationToken {

        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);
    }
}