Mercurial > pub > ImplabNet
view Implab/Diagnostics/Extensions.cs @ 209:a867536c68fc v2
Bound promise to CancellationToken
Added new states to ExecutionSate enum.
Added Safe.Guard() method to handle cleanup of the result of the promise
author | cin |
---|---|
date | Wed, 16 Nov 2016 03:06:08 +0300 |
parents | f973c5df9972 |
children |
line wrap: on
line source
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.On( x => { 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(); }, reason => { TraceContext.Instance.EnterLogicalOperation(op,true); TraceLog.TraceInformation("promise cancelled {0}", reason == null ? "<no-reason>" : reason.Message); TraceLog.EndLogicalOperation(); TraceContext.Instance.Leave(); } ); } public static IPromise EndLogicalOperation(this IPromise promise) { Safe.ArgumentNotNull(promise, "promise"); var op = TraceContext.Instance.DetachLogicalOperation(); return promise.On(() => { TraceContext.Instance.EnterLogicalOperation(op,true); TraceLog.EndLogicalOperation(); TraceContext.Instance.Leave(); }, PromiseEventType.All); } } }