##// END OF EJS Templates
Слияние с default
cin -
r199:43b1017ce100 merge v2
parent child
Show More
@@ -0,0 +1,1
1 f1da3afc3521e0e1631ac19e09690bc0a241841a release v2.1
@@ -27,10 +27,8 namespace Implab {
27 if ((m_mask & PromiseEventType.Success) != 0 && m_handler != null) {
27 if ((m_mask & PromiseEventType.Success) != 0 && m_handler != null) {
28 try {
28 try {
29 m_handler();
29 m_handler();
30 } catch (Exception err) {
30 // Analysis disable once EmptyGeneralCatchClause
31 // avoid calling handler twice in case of error
31 } catch {
32 if (m_error != null)
33 SignalError(err);
34 }
32 }
35 }
33 }
36 }
34 }
@@ -55,8 +53,8 namespace Implab {
55 if (m_cancel != null) {
53 if (m_cancel != null) {
56 try {
54 try {
57 m_cancel(reason);
55 m_cancel(reason);
58 } catch (Exception err) {
56 // Analysis disable once EmptyGeneralCatchClause
59 SignalError(err);
57 } catch {
60 }
58 }
61 } else if ( (m_mask & PromiseEventType.Cancelled) != 0 && m_handler != null) {
59 } else if ( (m_mask & PromiseEventType.Cancelled) != 0 && m_handler != null) {
62 try {
60 try {
@@ -39,16 +39,14 namespace Implab {
39 if (m_success != null) {
39 if (m_success != null) {
40 try {
40 try {
41 m_success(result);
41 m_success(result);
42 } catch(Exception err) {
42 // Analysis disable once EmptyGeneralCatchClause
43 SignalError(err);
43 } catch {
44 }
44 }
45 } else if ((m_mask & PromiseEventType.Success) != 0 && m_handler != null) {
45 } else if ((m_mask & PromiseEventType.Success) != 0 && m_handler != null) {
46 try {
46 try {
47 m_handler();
47 m_handler();
48 } catch(Exception err) {
48 // Analysis disable once EmptyGeneralCatchClause
49 // avoid calling handler twice in case of error
49 } catch {
50 if (m_error != null)
51 SignalError(err);
52 }
50 }
53 }
51 }
54 }
52 }
@@ -73,8 +71,8 namespace Implab {
73 if (m_cancel != null) {
71 if (m_cancel != null) {
74 try {
72 try {
75 m_cancel(reason);
73 m_cancel(reason);
76 } catch (Exception err) {
74 // Analysis disable once EmptyGeneralCatchClause
77 SignalError(err);
75 } catch {
78 }
76 }
79 } else if ((m_mask & PromiseEventType.Cancelled) != 0 && m_handler != null) {
77 } else if ((m_mask & PromiseEventType.Cancelled) != 0 && m_handler != null) {
80 try {
78 try {
@@ -23,10 +23,8 namespace Implab {
23 var p = m_task();
23 var p = m_task();
24 p.On(SetResult, HandleErrorInternal, HandleCancelInternal);
24 p.On(SetResult, HandleErrorInternal, HandleCancelInternal);
25 CancellationRequested(p.Cancel);
25 CancellationRequested(p.Cancel);
26 } catch (OperationCanceledException reason){
27 HandleCancelInternal(reason);
28 } catch(Exception err) {
26 } catch(Exception err) {
29 HandleErrorInternal(err);
27 SetErrorInternal(err);
30 }
28 }
31 }
29 }
32 }
30 }
@@ -36,10 +36,10 namespace Implab {
36 // отдавать ли результат или подтвердить отмену (или вернуть ошибку).
36 // отдавать ли результат или подтвердить отмену (или вернуть ошибку).
37 CancellationRequested(p.Cancel);
37 CancellationRequested(p.Cancel);
38 } catch (Exception err) {
38 } catch (Exception err) {
39 HandleErrorInternal(err);
39 SetErrorInternal(err);
40 }
40 }
41 } else {
41 } else {
42 HandleErrorInternal(reason ?? new OperationCanceledException());
42 SetCancelledInternal(reason);
43 }
43 }
44 }
44 }
45
45
@@ -50,7 +50,7 namespace Implab {
50 p.On(SetResult, SetErrorInternal, SetCancelledInternal);
50 p.On(SetResult, SetErrorInternal, SetCancelledInternal);
51 CancellationRequested(p.Cancel);
51 CancellationRequested(p.Cancel);
52 } catch (Exception err) {
52 } catch (Exception err) {
53 SetErrorInternal(error);
53 SetErrorInternal(err);
54 }
54 }
55 } else {
55 } else {
56 SetErrorInternal(error);
56 SetErrorInternal(error);
@@ -14,10 +14,8 namespace Implab {
14 var p = m_task(value);
14 var p = m_task(value);
15 p.On(SetResult, HandleErrorInternal, HandleCancelInternal);
15 p.On(SetResult, HandleErrorInternal, HandleCancelInternal);
16 CancellationRequested(p.Cancel);
16 CancellationRequested(p.Cancel);
17 } catch (OperationCanceledException reason) {
18 HandleCancelInternal(reason);
19 } catch(Exception err) {
17 } catch(Exception err) {
20 HandleErrorInternal(err);
18 SetErrorInternal(err);
21 }
19 }
22 }
20 }
23 }
21 }
@@ -12,10 +12,8 namespace Implab {
12 try {
12 try {
13 m_task();
13 m_task();
14 SetResult();
14 SetResult();
15 } catch(OperationCanceledException reason) {
16 HandleCancelInternal(reason);
17 } catch(Exception err) {
15 } catch(Exception err) {
18 HandleErrorInternal(err);
16 SetErrorInternal(err);
19 }
17 }
20 }
18 }
21 }
19 }
@@ -42,10 +42,10 namespace Implab {
42 m_cancel(error);
42 m_cancel(error);
43 SetResult();
43 SetResult();
44 } catch(Exception err) {
44 } catch(Exception err) {
45 HandleErrorInternal(err);
45 SetErrorInternal(err);
46 }
46 }
47 } else {
47 } else {
48 HandleErrorInternal(error ?? new OperationCanceledException());
48 SetCancelledInternal(error);
49 }
49 }
50 }
50 }
51 }
51 }
@@ -12,10 +12,8 namespace Implab {
12 try {
12 try {
13 m_task(value);
13 m_task(value);
14 SetResult();
14 SetResult();
15 } catch(OperationCanceledException reason) {
16 HandleCancelInternal(reason);
17 } catch(Exception err) {
15 } catch(Exception err) {
18 HandleErrorInternal(err);
16 SetErrorInternal(err);
19 }
17 }
20 }
18 }
21 }
19 }
@@ -120,6 +120,20 namespace Implab.Components {
120
120
121 prev = m_pending;
121 prev = m_pending;
122
122
123 Action<Exception> errorOrCancel = e => {
124 if (e == null)
125 e = new OperationCanceledException();
126
127 lock (m_stateMachine) {
128 if (m_pending == promise) {
129 Move(Commands.Fail);
130 m_pending = null;
131 m_lastError = e;
132 }
133 }
134 throw new PromiseTransientException(e);
135 };
136
123 promise = task.Then(
137 promise = task.Then(
124 () => {
138 () => {
125 lock(m_stateMachine) {
139 lock(m_stateMachine) {
@@ -128,16 +142,9 namespace Implab.Components {
128 m_pending = null;
142 m_pending = null;
129 }
143 }
130 }
144 }
131 }, e => {
145 },
132 lock(m_stateMachine) {
146 errorOrCancel,
133 if (m_pending == promise) {
147 errorOrCancel
134 Move(Commands.Fail);
135 m_pending = null;
136 m_lastError = e;
137 }
138 }
139 throw new PromiseTransientException(e);
140 }
141 );
148 );
142
149
143 m_pending = promise;
150 m_pending = promise;
@@ -15,10 +15,8 namespace Implab {
15 var operation = m_task();
15 var operation = m_task();
16 operation.On(SetResult, HandleErrorInternal, HandleCancelInternal);
16 operation.On(SetResult, HandleErrorInternal, HandleCancelInternal);
17 CancellationRequested(operation.Cancel);
17 CancellationRequested(operation.Cancel);
18 } catch (OperationCanceledException reason) {
19 HandleCancelInternal(reason);
20 } catch (Exception err) {
18 } catch (Exception err) {
21 HandleErrorInternal(err);
19 SetErrorInternal(err);
22 }
20 }
23 }
21 }
24 }
22 }
@@ -43,10 +43,10 namespace Implab {
43 p.On(SetResult, HandleErrorInternal, SetCancelledInternal);
43 p.On(SetResult, HandleErrorInternal, SetCancelledInternal);
44 CancellationRequested(p.Cancel);
44 CancellationRequested(p.Cancel);
45 } catch (Exception err) {
45 } catch (Exception err) {
46 HandleErrorInternal(err);
46 SetErrorInternal(err);
47 }
47 }
48 } else {
48 } else {
49 HandleErrorInternal(reason ?? new OperationCanceledException());
49 SetCancelledInternal(reason);
50 }
50 }
51 }
51 }
52 }
52 }
@@ -14,10 +14,8 namespace Implab {
14 var operation = m_task(value);
14 var operation = m_task(value);
15 operation.On(SetResult, HandleErrorInternal, SetCancelled);
15 operation.On(SetResult, HandleErrorInternal, SetCancelled);
16 CancellationRequested(operation.Cancel);
16 CancellationRequested(operation.Cancel);
17 } catch (OperationCanceledException reason) {
18 HandleCancelInternal(reason);
19 } catch (Exception err) {
17 } catch (Exception err) {
20 HandleErrorInternal(err);
18 SetErrorInternal(err);
21 }
19 }
22 }
20 }
23 }
21 }
@@ -13,10 +13,8 namespace Implab {
13 if (m_task != null && LockCancelation()) {
13 if (m_task != null && LockCancelation()) {
14 try {
14 try {
15 SetResult(m_task());
15 SetResult(m_task());
16 } catch(OperationCanceledException reason) {
17 HandleCancelInternal(reason);
18 } catch(Exception err) {
16 } catch(Exception err) {
19 HandleErrorInternal(err);
17 SetErrorInternal(err);
20 }
18 }
21 }
19 }
22 }
20 }
@@ -40,10 +40,10 namespace Implab {
40 try {
40 try {
41 SetResult(m_cancel(reason));
41 SetResult(m_cancel(reason));
42 } catch (Exception err) {
42 } catch (Exception err) {
43 HandleErrorInternal(err);
43 SetErrorInternal(err);
44 }
44 }
45 } else {
45 } else {
46 HandleErrorInternal(reason ?? new OperationCanceledException());
46 SetCancelledInternal(reason);
47 }
47 }
48 }
48 }
49
49
@@ -12,10 +12,8 namespace Implab {
12 if (m_task != null && LockCancelation()) {
12 if (m_task != null && LockCancelation()) {
13 try {
13 try {
14 SetResult(m_task(value));
14 SetResult(m_task(value));
15 } catch(OperationCanceledException reason) {
16 HandleCancelInternal(reason);
17 } catch(Exception err) {
15 } catch(Exception err) {
18 HandleErrorInternal(err);
16 SetErrorInternal(err);
19 }
17 }
20 }
18 }
21 }
19 }
General Comments 3
Under Review
author

Auto status change to "Under Review"

Approved
author

ok, latest stable version should be in default

You need to be logged in to leave comments. Login now