annotate Implab/IPromise.cs @ 196:40d7fed4a09e

fixed promise chaining behavior, the error handler doesn't handle result or cancellation handlers exceptions these exceptions are propagated to the next handlers.
author cin
date Mon, 29 Aug 2016 23:15:51 +0300
parents ec91a6dfa5b3
children cbe10ac0731e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
1 using System;
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
2 using System.Collections.Generic;
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
3 using System.Linq;
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
4 using System.Text;
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
5
66
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
6 namespace Implab {
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
7 public interface IPromise: ICancellable {
26
f0bf98e4d22c refactoring
cin
parents: 25
diff changeset
8
66
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
9 /// <summary>
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
10 /// Тип результата, получаемого через данное обещание.
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
11 /// </summary>
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
12 Type PromiseType { get; }
25
9bf5b23650c9 refactoring
cin
parents: 19
diff changeset
13
74
c4140283575c minor fixes
cin
parents: 66
diff changeset
14 /// <summary>
99
8ddf1648eca4 fixed TransientPromiseException handling
cin
parents: 96
diff changeset
15 /// Обещание является выполненым, либо успешно, либо с ошибкой, либо отменено.
74
c4140283575c minor fixes
cin
parents: 66
diff changeset
16 /// </summary>
66
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
17 bool IsResolved { get; }
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
18
74
c4140283575c minor fixes
cin
parents: 66
diff changeset
19 /// <summary>
c4140283575c minor fixes
cin
parents: 66
diff changeset
20 /// Обещание было отменено.
c4140283575c minor fixes
cin
parents: 66
diff changeset
21 /// </summary>
66
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
22 bool IsCancelled { get; }
25
9bf5b23650c9 refactoring
cin
parents: 19
diff changeset
23
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
24 /// <summary>
138
f75cfa58e3d4 added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
cin
parents: 119
diff changeset
25 /// Исключение возникшее в результате выполнения обещания, либо причина отмены.
f75cfa58e3d4 added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
cin
parents: 119
diff changeset
26 /// </summary>
f75cfa58e3d4 added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
cin
parents: 119
diff changeset
27 Exception Error { get; }
f75cfa58e3d4 added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
cin
parents: 119
diff changeset
28
f75cfa58e3d4 added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
cin
parents: 119
diff changeset
29 /// <summary>
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
30 /// Adds specified listeners to the current promise.
75
4439140706d0 major refactoring, added tasks support
cin
parents: 74
diff changeset
31 /// </summary>
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
32 /// <param name="success">The handler called on the successful promise completion.</param>
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
33 /// <param name="error">The handler is called if an error while completing the promise occurred.</param>
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
34 /// <param name="cancel">The handler is called in case of promise cancellation.</param>
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
35 /// <returns>The current promise.</returns>
138
f75cfa58e3d4 added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
cin
parents: 119
diff changeset
36 IPromise On(Action success, Action<Exception> error, Action<Exception> cancel);
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
37 IPromise On(Action success, Action<Exception> error);
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
38 IPromise On(Action success);
75
4439140706d0 major refactoring, added tasks support
cin
parents: 74
diff changeset
39
74
c4140283575c minor fixes
cin
parents: 66
diff changeset
40 /// <summary>
119
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
41 /// Adds specified listeners to the current promise.
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
42 /// </summary>
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
43 /// <param name="handler">The handler called on the specified events.</param>
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
44 /// <param name = "events">The combination of flags denoting the events for which the
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
45 /// handler shoud be called.</param>
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
46 /// <returns>The current promise.</returns>
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
47 IPromise On(Action handler, PromiseEventType events);
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
48
2573b562e328 Promises rewritten, added improved version of AsyncQueue
cin
parents: 104
diff changeset
49 /// <summary>
74
c4140283575c minor fixes
cin
parents: 66
diff changeset
50 /// Преобразует результат обещания к заданному типу и возвращает новое обещание.
c4140283575c minor fixes
cin
parents: 66
diff changeset
51 /// </summary>
66
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
52 IPromise<T> Cast<T>();
26
f0bf98e4d22c refactoring
cin
parents: 25
diff changeset
53
74
c4140283575c minor fixes
cin
parents: 66
diff changeset
54 /// <summary>
c4140283575c minor fixes
cin
parents: 66
diff changeset
55 /// Синхронизирует текущий поток с обещанием.
c4140283575c minor fixes
cin
parents: 66
diff changeset
56 /// </summary>
66
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
57 void Join();
74
c4140283575c minor fixes
cin
parents: 66
diff changeset
58 /// <summary>
c4140283575c minor fixes
cin
parents: 66
diff changeset
59 /// Синхронизирует текущий поток с обещанием.
c4140283575c minor fixes
cin
parents: 66
diff changeset
60 /// </summary>
c4140283575c minor fixes
cin
parents: 66
diff changeset
61 /// <param name="timeout">Время ожидания, по его истечению возникнет исключение.</param>
c4140283575c minor fixes
cin
parents: 66
diff changeset
62 /// <exception cref="TimeoutException">Превышено время ожидания.</exception>
66
790e8a997d30 Refactoring
cin
parents: 33
diff changeset
63 void Join(int timeout);
7
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
64
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
65 }
7ea9363fef6c inital progress handling
cin
parents:
diff changeset
66 }