Extensions.cs
41 lines
| 1.7 KiB
| text/x-csharp
|
CSharpLexer
|
|
r134 | namespace Implab.Diagnostics { | ||
|
|
r92 | public static class Extensions { | ||
| public static IPromise<T> EndLogicalOperation<T>(this IPromise<T> promise) { | ||||
| Safe.ArgumentNotNull(promise, "promise"); | ||||
| var op = TraceContext.Instance.DetachLogicalOperation(); | ||||
|
|
r119 | return promise.On( | ||
| x => { | ||||
|
|
r109 | TraceContext.Instance.EnterLogicalOperation(op,true); | ||
| TraceLog.TraceInformation("promise = {0}", x); | ||||
| TraceLog.EndLogicalOperation(); | ||||
| TraceContext.Instance.Leave(); | ||||
| }, | ||||
| err =>{ | ||||
| TraceContext.Instance.EnterLogicalOperation(op,true); | ||||
| TraceLog.TraceError("promise died {0}", err); | ||||
| TraceLog.EndLogicalOperation(); | ||||
| TraceContext.Instance.Leave(); | ||||
| }, | ||||
|
|
r138 | reason => { | ||
|
|
r109 | TraceContext.Instance.EnterLogicalOperation(op,true); | ||
|
|
r140 | TraceLog.TraceInformation("promise cancelled {0}", reason == null ? "<no-reason>" : reason.Message); | ||
|
|
r109 | TraceLog.EndLogicalOperation(); | ||
| TraceContext.Instance.Leave(); | ||||
| } | ||||
| ); | ||||
|
|
r92 | } | ||
|
|
r94 | |||
| public static IPromise EndLogicalOperation(this IPromise promise) { | ||||
| Safe.ArgumentNotNull(promise, "promise"); | ||||
| var op = TraceContext.Instance.DetachLogicalOperation(); | ||||
|
|
r119 | return promise.On(() => { | ||
|
|
r94 | TraceContext.Instance.EnterLogicalOperation(op,true); | ||
| TraceLog.EndLogicalOperation(); | ||||
| TraceContext.Instance.Leave(); | ||||
|
|
r119 | }, PromiseEventType.All); | ||
|
|
r94 | } | ||
|
|
r92 | } | ||
| } | ||||
