| 641 | } |
| 642 | |
| 643 | final class JoinPromise<T> extends Promise<Void> implements Responder<T> { |
| 644 | private final AtomicInteger count; |
| 645 | private final List<? extends Future<T>> list; |
| 646 | |
| 647 | public JoinPromise(final List<? extends Future<T>> list) { |
| 648 | this.list = list; |
| 649 | this.count = new AtomicInteger(list.size()); |
| 650 | } |
| 651 | |
| 652 | @Override |
| 653 | public final void onException(final Throwable ex) { |
| 654 | setException(ex); |
| 655 | } |
| 656 | |
| 657 | @Override |
| 658 | public final void onValue(final T value) { |
| 659 | if (count.decrementAndGet() == 0) |
| 660 | become(Future.VOID); |
| 661 | } |
| 662 | |
| 663 | @Override |
| 664 | protected InterruptHandler getInterruptHandler() { |
| 665 | return InterruptHandler.apply(list); |
| 666 | } |
| 667 | } |
| 668 | |
| 669 | final class FirstCompletedOfPromise<T> extends Promise<T> implements Responder<T> { |
| 670 |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…