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