comparison Implab/Diagnostics/Extensions.cs @ 192:f1da3afc3521 release v2.1

Слияние с v2
author cin
date Fri, 22 Apr 2016 13:10:34 +0300
parents f973c5df9972
children
comparison
equal deleted inserted replaced
71:1714fd8678ef 192:f1da3afc3521
1 namespace Implab.Diagnostics {
2 public static class Extensions {
3 public static IPromise<T> EndLogicalOperation<T>(this IPromise<T> promise) {
4 Safe.ArgumentNotNull(promise, "promise");
5 var op = TraceContext.Instance.DetachLogicalOperation();
6
7 return promise.On(
8 x => {
9 TraceContext.Instance.EnterLogicalOperation(op,true);
10 TraceLog.TraceInformation("promise = {0}", x);
11 TraceLog.EndLogicalOperation();
12 TraceContext.Instance.Leave();
13 },
14 err =>{
15 TraceContext.Instance.EnterLogicalOperation(op,true);
16 TraceLog.TraceError("promise died {0}", err);
17 TraceLog.EndLogicalOperation();
18 TraceContext.Instance.Leave();
19 },
20 reason => {
21 TraceContext.Instance.EnterLogicalOperation(op,true);
22 TraceLog.TraceInformation("promise cancelled {0}", reason == null ? "<no-reason>" : reason.Message);
23 TraceLog.EndLogicalOperation();
24 TraceContext.Instance.Leave();
25 }
26 );
27 }
28
29 public static IPromise EndLogicalOperation(this IPromise promise) {
30 Safe.ArgumentNotNull(promise, "promise");
31 var op = TraceContext.Instance.DetachLogicalOperation();
32
33 return promise.On(() => {
34 TraceContext.Instance.EnterLogicalOperation(op,true);
35 TraceLog.EndLogicalOperation();
36 TraceContext.Instance.Leave();
37 }, PromiseEventType.All);
38 }
39 }
40 }
41