using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Implab { public interface IPromise: ICancellable { /// /// Тип результата, получаемого через данное обещание. /// Type PromiseType { get; } /// /// Обещание является выполненым, либо успешно, либо с ошибкой, либо отменено. /// bool IsResolved { get; } /// /// Обещание было отменено. /// bool IsCancelled { get; } /// /// Исключение возникшее в результате выполнения обещания, либо причина отмены. /// Exception Error { get; } /// /// Adds specified listeners to the current promise. /// /// The handler called on the successful promise completion. /// The handler is called if an error while completing the promise occurred. /// The handler is called in case of promise cancellation. /// The current promise. IPromise On(Action success, Action error, Action cancel); IPromise On(Action success, Action error); IPromise On(Action success); /// /// Adds specified listeners to the current promise. /// /// The handler called on the specified events. /// The combination of flags denoting the events for which the /// handler shoud be called. /// The current promise. IPromise On(Action handler, PromiseEventType events); /// /// Преобразует результат обещания к заданному типу и возвращает новое обещание. /// IPromise Cast(); /// /// Синхронизирует текущий поток с обещанием. /// void Join(); /// /// Синхронизирует текущий поток с обещанием. /// /// Время ожидания, по его истечению возникнет исключение. /// Превышено время ожидания. void Join(int timeout); } }