SuccessPromiseT.cs
177 lines
| 4.7 KiB
| text/x-csharp
|
CSharpLexer
/ Implab / SuccessPromiseT.cs
|
|
r145 | using System; | ||
| namespace Implab { | ||||
| public class SuccessPromise<T> : IPromise<T> { | ||||
| readonly T m_value; | ||||
| public SuccessPromise(T value){ | ||||
| m_value = value; | ||||
| } | ||||
| public IPromise<T> On(Action<T> success, Action<Exception> error, Action<Exception> cancel) { | ||||
| if (success != null) { | ||||
| try { | ||||
| success(m_value); | ||||
| } catch(Exception err) { | ||||
| if (error != null) { | ||||
| try { | ||||
| error(err); | ||||
| // Analysis disable once EmptyGeneralCatchClause | ||||
| } catch { | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| return this; | ||||
| } | ||||
| public IPromise<T> On(Action<T> success, Action<Exception> error) { | ||||
| if (success != null) { | ||||
| try { | ||||
| success(m_value); | ||||
| } catch(Exception err) { | ||||
| if (error != null) { | ||||
| try { | ||||
| error(err); | ||||
| // Analysis disable once EmptyGeneralCatchClause | ||||
| } catch { | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| return this; | ||||
| } | ||||
| public IPromise<T> On(Action<T> success) { | ||||
| if (success != null) { | ||||
| try { | ||||
| success(m_value); | ||||
| // Analysis disable once EmptyGeneralCatchClause | ||||
| } catch { | ||||
| } | ||||
| } | ||||
| return this; | ||||
| } | ||||
| public T Join() { | ||||
| return m_value; | ||||
| } | ||||
| public T Join(int timeout) { | ||||
| return m_value; | ||||
| } | ||||
| public IPromise<T> On(Action success, Action<Exception> error, Action<Exception> cancel) { | ||||
| if (success != null) { | ||||
| try { | ||||
| success(); | ||||
| } catch(Exception err) { | ||||
| if (error != null) { | ||||
| try { | ||||
| error(err); | ||||
| // Analysis disable once EmptyGeneralCatchClause | ||||
| } catch { | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| return this; | ||||
| } | ||||
| public IPromise<T> On(Action success, Action<Exception> error) { | ||||
| if (success != null) { | ||||
| try { | ||||
| success(); | ||||
| } catch(Exception err) { | ||||
| if (error != null) { | ||||
| try { | ||||
| error(err); | ||||
| // Analysis disable once EmptyGeneralCatchClause | ||||
| } catch { | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| return this; | ||||
| } | ||||
| public IPromise<T> On(Action success) { | ||||
| if (success != null) { | ||||
| try { | ||||
| success(); | ||||
| // Analysis disable once EmptyGeneralCatchClause | ||||
| } catch { | ||||
| } | ||||
| } | ||||
| return this; | ||||
| } | ||||
| public IPromise<T> On(Action handler, PromiseEventType events) { | ||||
| if (handler != null && events.HasFlag(PromiseEventType.Success)) { | ||||
| try { | ||||
| handler(); | ||||
| // Analysis disable once EmptyGeneralCatchClause | ||||
| } catch { | ||||
| } | ||||
| } | ||||
| return this; | ||||
| } | ||||
| IPromise IPromise.On(Action success, Action<Exception> error, Action<Exception> cancel) { | ||||
| return On(success, error, cancel); | ||||
| } | ||||
| IPromise IPromise.On(Action success, Action<Exception> error) { | ||||
| return On(success, error); | ||||
| } | ||||
| IPromise IPromise.On(Action success) { | ||||
| return On(success); | ||||
| } | ||||
| IPromise IPromise.On(Action handler, PromiseEventType events) { | ||||
| return On(handler, events); | ||||
| } | ||||
| public IPromise<T2> Cast<T2>() { | ||||
| return new SuccessPromise<T2>((T2)(object)m_value); | ||||
| } | ||||
| void IPromise.Join() { | ||||
| } | ||||
| void IPromise.Join(int timeout) { | ||||
| } | ||||
| public Type PromiseType { | ||||
| get { | ||||
| return typeof(T); | ||||
| } | ||||
| } | ||||
| public bool IsResolved { | ||||
| get { | ||||
| return true; | ||||
| } | ||||
| } | ||||
| public bool IsCancelled { | ||||
| get { | ||||
| return false; | ||||
| } | ||||
| } | ||||
| public Exception Error { | ||||
| get { | ||||
| return null; | ||||
| } | ||||
| } | ||||
| public void Cancel() { | ||||
| } | ||||
| public void Cancel(Exception reason) { | ||||
| } | ||||
| } | ||||
| } | ||||
