##// END OF EJS Templates
added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()'...
added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()' added Safe.Dispose(IEnumerable) added PromiseExtensions.CancellationPoint to add a cancellation point to the chain of promises added IPromise<T> PromiseExtensions.Then<T>(this IPromise<T> that, Action<T> success) overloads added PromiseExtensions.Error() overloads to handle a error or(and) a cancellation

File last commit:

r203:4d9830a9bbb8 v2
r207:558f34b2fb50 v2
Show More
SuccessPromiseT.cs
153 lines | 3.8 KiB | text/x-csharp | CSharpLexer
/ Implab / SuccessPromiseT.cs
cin
RC: cancellation support for promises + tests
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);
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 // Analysis disable once EmptyGeneralCatchClause
} catch {
cin
RC: cancellation support for promises + tests
r145 }
}
return this;
}
public IPromise<T> On(Action<T> success, Action<Exception> error) {
if (success != null) {
try {
success(m_value);
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 // Analysis disable once EmptyGeneralCatchClause
} catch {
cin
RC: cancellation support for promises + tests
r145 }
}
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();
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 // Analysis disable once EmptyGeneralCatchClause
} catch {
cin
RC: cancellation support for promises + tests
r145 }
}
return this;
}
public IPromise<T> On(Action success, Action<Exception> error) {
if (success != null) {
try {
success();
cin
Added 'Fail' method to RunnableComponent which allows component to move from...
r203 // Analysis disable once EmptyGeneralCatchClause
} catch {
cin
RC: cancellation support for promises + tests
r145 }
}
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) {
}
}
}