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 { | |||
cin
|
r249 | public static Action<T, Deferred> Create<T>(Action<T> handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (v, next) => { | |
cin
|
r248 | try { | |
handler(v); | |||
next.Resolve(); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
cin
|
r249 | public static Action<T, Deferred> Create<T>(Func<T, IPromise> handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (v, next) => { | |
cin
|
r248 | try { | |
next.Resolve(handler(v)); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
cin
|
r249 | public static Action<T, Deferred<T2>> Create<T, T2>(Func<T, T2> handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (v, next) => { | |
cin
|
r248 | try { | |
next.Resolve(handler(v)); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
cin
|
r249 | public static Action<T, Deferred<T2>> Create<T, T2>(Func<T, IPromise<T2>> handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (v, next) => { | |
cin
|
r248 | try { | |
next.Resolve(handler(v)); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
cin
|
r249 | public static Action<Deferred> Create(Action handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (next) => { | |
cin
|
r248 | try { | |
handler(); | |||
next.Resolve(); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
cin
|
r249 | public static Action<Deferred> Create(Func<IPromise> handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (next) => { | |
cin
|
r248 | try { | |
next.Resolve(handler()); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
cin
|
r249 | public static Action<Deferred<T2>> Create<T2>(Func<T2> handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (next) => { | |
cin
|
r248 | try { | |
next.Resolve(handler()); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
cin
|
r249 | public static Action<Deferred<T2>> Create<T2>(Func<IPromise<T2>> handler) { | |
cin
|
r248 | Debug.Assert(handler != null); | |
cin
|
r249 | return (next) => { | |
cin
|
r248 | try { | |
next.Resolve(handler()); | |||
} catch (Exception err) { | |||
next.Reject(err); | |||
} | |||
}; | |||
} | |||
} | |||
} |