##// END OF EJS Templates
refactoring, moving to dotnercore, simplifying promises
refactoring, moving to dotnercore, simplifying promises

File last commit:

r203:4d9830a9bbb8 v2
r240:fa6cbf4d8841 v3
Show More
FailedPromise.cs
100 lines | 2.3 KiB | text/x-csharp | CSharpLexer
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
}
}