SuccessPromiseT.cs
177 lines
| 4.7 KiB
| text/x-csharp
|
CSharpLexer
/ Implab / SuccessPromiseT.cs
cin
|
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) { | ||||
} | ||||
} | ||||
} | ||||