/** * Creates an {@link IResultListener} that delegates results and exceptions to a given Future. * * @param delegate The future used for success delegation. * @param customResultListener Custom result listener that overwrites the delegation behaviour. * @return {@link IResultListener} */ public static <E> IResultListener<E> delegate(final Future<E> delegate, IFunctionalResultListener<E> customResultListener) { return delegate(delegate, false, customResultListener); }
/** * Creates an {@link IIntermediateResultListener} that delegates results and exceptions to a given IntermediateFuture. * * @param delegate The future used for intermediate and final result delegation. * @return {@link IntermediateDelegationResultListener} */ public static <E> IIntermediateResultListener<E> delegate(final IntermediateFuture<E> delegate) { return delegate(delegate, false, null, null); }
/** * Creates an {@link IResultListener} that delegates results and exceptions to a given Future. * Supports creating delegations for Future, IntermediateFuture and Tuple2Future. * * @param delegate The future used for success delegation. * @return {@link IResultListener} */ public static <E> IResultListener<E> delegate(final Future<E> delegate) { return delegate(delegate, false); }
/** * Creates an {@link IResultListener} that delegates results and exceptions to a given Future. * * @param delegate The future used for success delegation. * @param undone Flag if undone methods should be used. * @return {@link IResultListener} */ public static <E> IResultListener<E> delegate(final Future<E> delegate, boolean undone) { return delegate(delegate, undone, null); }
/** * Creates an {@link IIntermediateResultListener} that delegates results and exceptions to a given IntermediateFuture. * * @param delegate The future used for intermediate and final result delegation. * @param undone Flag if undone methods should be used. * @return {@link IntermediateDelegationResultListener} */ public static <E> IIntermediateResultListener<E> delegate(final IntermediateFuture<E> delegate, boolean undone) { return delegate(delegate, undone, null, null); }
/** * Creates a delegation from source to target, respecting future types. * @param source Delegation source. * @param target Delegation target. */ public static <E> void delegateFromTo(IFuture<E> source, Future<E> target) { // if (source instanceof ITuple2Future && target instanceof Tuple2Future) // { // // need special case for tuple? // ((ITuple2Future) source).addResultListener(delegate((Tuple2Future)target)); // } if (source instanceof IIntermediateFuture && target instanceof IntermediateFuture) { ((IIntermediateFuture) source).addIntermediateResultListener(delegate((IntermediateFuture)target)); } else { source.addResultListener(delegate(target)); } // TODO: needed for other *DelegationResultListeners ? }
public void customResultAvailable(E result) { IFuture<T> res = function.apply(result); res.addResultListener(SResultListener.delegate(ret)); } });