PromiseHandler.cs
101 lines
| 2.8 KiB
| text/x-csharp
|
CSharpLexer
/ Implab / PromiseHandler.cs
cin
|
r248 | using System; | |
using System.Diagnostics; | |||
namespace Implab { | |||
class PromiseHandler { | |||
public static Action<T> Create<T>(Action<T> handler, Deferred next) { | |||
Debug.Assert(handler != null); | |||
return (v) => { | |||
try { | |||
handler(v); | |||
next.Resolve(); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
public static Action<T> Create<T>(Func<T, IPromise> handler, Deferred next) { | |||
Debug.Assert(handler != null); | |||
return (v) => { | |||
try { | |||
next.Resolve(handler(v)); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
public static Action<T> Create<T, T2>(Func<T, T2> handler, Deferred<T2> next) { | |||
Debug.Assert(handler != null); | |||
return (v) => { | |||
try { | |||
next.Resolve(handler(v)); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
public static Action<T> Create<T, T2>(Func<T, IPromise<T2>> handler, Deferred<T2> next) { | |||
Debug.Assert(handler != null); | |||
return (v) => { | |||
try { | |||
next.Resolve(handler(v)); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
public static Action Create(Action handler, Deferred next) { | |||
Debug.Assert(handler != null); | |||
return () => { | |||
try { | |||
handler(); | |||
next.Resolve(); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
public static Action Create(Func<IPromise> handler, Deferred next) { | |||
Debug.Assert(handler != null); | |||
return () => { | |||
try { | |||
next.Resolve(handler()); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
public static Action Create<T2>(Func<T2> handler, Deferred<T2> next) { | |||
Debug.Assert(handler != null); | |||
return () => { | |||
try { | |||
next.Resolve(handler()); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
public static Action Create<T2>(Func<IPromise<T2>> handler, Deferred<T2> next) { | |||
Debug.Assert(handler != null); | |||
return () => { | |||
try { | |||
next.Resolve(handler()); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
} | |||
} |