FailedPromise.cs
100 lines
| 2.3 KiB
| text/x-csharp
|
CSharpLexer
/ Implab / FailedPromise.cs
cin
|
r203 | using System; | ||
using System.Reflection; | ||||
namespace Implab { | ||||
public class FailedPromise : IPromise { | ||||
readonly Exception m_error; | ||||
public FailedPromise(Exception error) { | ||||
Safe.ArgumentNotNull(error, "error"); | ||||
m_error = error; | ||||
} | ||||
#region IPromise implementation | ||||
public IPromise On(Action success, Action<Exception> error, Action<Exception> cancel) { | ||||
if (error != null) { | ||||
try { | ||||
error(m_error); | ||||
// Analysis disable once EmptyGeneralCatchClause | ||||
} catch { | ||||
} | ||||
} | ||||
return this; | ||||
} | ||||
public IPromise On(Action success, Action<Exception> error) { | ||||
if (error != null) { | ||||
try { | ||||
error(m_error); | ||||
// Analysis disable once EmptyGeneralCatchClause | ||||
} catch { | ||||
} | ||||
} | ||||
return this; | ||||
} | ||||
public IPromise On(Action success) { | ||||
return this; | ||||
} | ||||
public IPromise On(Action handler, PromiseEventType events) { | ||||
if ((events & PromiseEventType.Error) != 0) { | ||||
try { | ||||
handler(); | ||||
// Analysis disable once EmptyGeneralCatchClause | ||||
} catch { | ||||
} | ||||
} | ||||
return this; | ||||
} | ||||
public IPromise<T> Cast<T>() { | ||||
return (IPromise<T>)this; | ||||
} | ||||
public void Join() { | ||||
throw new TargetInvocationException(Error); | ||||
} | ||||
public void Join(int timeout) { | ||||
throw new TargetInvocationException(Error); | ||||
} | ||||
public virtual Type PromiseType { | ||||
get { | ||||
return typeof(void); | ||||
} | ||||
} | ||||
public bool IsResolved { | ||||
get { | ||||
return true; | ||||
} | ||||
} | ||||
public bool IsCancelled { | ||||
get { | ||||
return false; | ||||
} | ||||
} | ||||
public Exception Error { | ||||
get { | ||||
return m_error; | ||||
} | ||||
} | ||||
#endregion | ||||
#region ICancellable implementation | ||||
public void Cancel() { | ||||
} | ||||
public void Cancel(Exception reason) { | ||||
} | ||||
#endregion | ||||
} | ||||
} | ||||