public Spore<I,O> onFinish( Runnable toRun) { finSignal.then(toRun); return this; }
public Spore<I,O> onFinish( Runnable toRun) { finSignal.then(toRun); return this; }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> onTimeout(Consumer timeoutHandler) { return then( (r,e) -> { if ( e == Timeout.INSTANCE ) { timeoutHandler.accept(e); } }); }
/** * see IPromise interface */ @Override public IPromise<T> then(Runnable result) { return then( (r,e) -> result.run() ); }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> onError(Consumer errorHandler) { return then( (r,e) -> { if ( e != null && e != Timeout.INSTANCE) { errorHandler.accept(e); } }); }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> onTimeout(Consumer timeoutHandler) { return then( (r,e) -> { if ( e == Timeout.INSTANCE ) { timeoutHandler.accept(e); } }); }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> onResult(Consumer<T> resultHandler) { return then( (r,e) -> { if ( e == null ) { resultHandler.accept((T) r); } }); }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> onError(Consumer errorHandler) { return then( (r,e) -> { if ( e != null && e != Timeout.INSTANCE) { errorHandler.accept(e); } }); }
/** * see IPromise interface */ @Override public IPromise<T> then(Runnable result) { return then( (r,e) -> result.run() ); }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> onResult(Consumer<T> resultHandler) { return then( (r,e) -> { if ( e == null ) { resultHandler.accept((T) r); } }); }
/** * see IPromise (inheriting Callback) interface */ @Override public <OUT> IPromise<OUT> catchError(Consumer<Object> function) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( ! Actor.isError(error) ) { res.complete(null, error); } else { function.accept(error); res.resolve(); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public <OUT> IPromise<OUT> thenAnd(final Function<T, IPromise<OUT>> function) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( Actor.isError(error) ) { res.complete(null, error); } else { function.apply(result).then(res); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public <OUT> IPromise<OUT> catchError(final Function<Object, IPromise<OUT>> function) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( ! Actor.isError(error) ) { res.complete(null, error); } else { function.apply(error).then(res); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public <OUT> IPromise<OUT> then(Consumer<T> function) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( Actor.isError(error) ) { res.complete(null, error); } else { function.accept(result); res.resolve(); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public <OUT> IPromise<OUT> thenAnd(final Function<T, IPromise<OUT>> function) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( Actor.isError(error) ) { res.complete(null, error); } else { function.apply(result).then(res); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> thenAnd(Supplier<IPromise<T>> callable) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( Actor.isError(error) ) { res.complete(null, error); } else { IPromise<T> call = null; call = callable.get().then(res); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public <OUT> IPromise<OUT> catchError(final Function<Object, IPromise<OUT>> function) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( ! Actor.isError(error) ) { res.complete(null, error); } else { function.apply(error).then(res); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public <OUT> IPromise<OUT> then(Consumer<T> function) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( Actor.isError(error) ) { res.complete(null, error); } else { function.accept(result); res.resolve(); } } }); return res; }
/** * see IPromise (inheriting Callback) interface */ @Override public IPromise<T> thenAnd(Supplier<IPromise<T>> callable) { Promise res = new Promise<>(); then( new Callback<T>() { @Override public void complete(T result, Object error) { if ( Actor.isError(error) ) { res.complete(null, error); } else { IPromise<T> call = null; call = callable.get().then(res); } } }); return res; }
/** * similar all but map promises to their content * * returns a future which is settled once all promises provided are settled * */ public static <T> IPromise<List<T>> allMapped(List<IPromise<T>> futures) { Promise returned = new Promise(); Promise res = new Promise(); awaitSettle(futures, res); res.then( (r, e) -> { if (r!=null) { returned.resolve(((List<Promise>)r).stream().map(p -> p.get()).collect(Collectors.toList())); } else { returned.complete(null,e); } }); return returned; }