##// END OF EJS Templates
close v2-1...
close v2-1 bad idea

File last commit:

r140:f973c5df9972 v2
r241:c19cee55e85e v2-1
Show More
Extensions.cs
43 lines | 1.7 KiB | text/x-csharp | CSharpLexer
namespace Implab.Diagnostics {
public static class Extensions {
public static IPromise<T> EndLogicalOperation<T>(this IPromise<T> promise) {
Safe.ArgumentNotNull(promise, "promise");
var op = TraceContext.Instance.DetachLogicalOperation();
return promise.Then<T>(
x => {
TraceContext.Instance.EnterLogicalOperation(op,true);
TraceLog.TraceInformation("promise = {0}", x);
TraceLog.EndLogicalOperation();
TraceContext.Instance.Leave();
return x;
},
err =>{
TraceContext.Instance.EnterLogicalOperation(op,true);
TraceLog.TraceError("promise died {0}", err);
TraceLog.EndLogicalOperation();
TraceContext.Instance.Leave();
throw new TransientPromiseException(err);
},
() => {
TraceContext.Instance.EnterLogicalOperation(op,true);
TraceLog.TraceInformation("promise cancelled");
TraceLog.EndLogicalOperation();
TraceContext.Instance.Leave();
}
);
}
public static IPromise EndLogicalOperation(this IPromise promise) {
Safe.ArgumentNotNull(promise, "promise");
var op = TraceContext.Instance.DetachLogicalOperation();
return promise.Anyway(() => {
TraceContext.Instance.EnterLogicalOperation(op,true);
TraceLog.EndLogicalOperation();
TraceContext.Instance.Leave();
});
}
}
}