RaceCoordinator<T> coordinator = new RaceCoordinator<>(n); coordinator.subscribe(a, n, actual);
@Test public void scanRaceCoordinator() { CoreSubscriber<String> actual = new LambdaSubscriber<>(null, e -> {}, null, null); FluxFirstEmitting.RaceCoordinator<String> parent = new FluxFirstEmitting.RaceCoordinator<>(1); FluxFirstEmitting.FirstEmittingSubscriber<String> test = new FluxFirstEmitting.FirstEmittingSubscriber<>(actual, parent, 1); Subscription sub = Operators.emptySubscription(); test.onSubscribe(sub); assertThat(test.scan(Scannable.Attr.PARENT)).isSameAs(sub); assertThat(test.scan(Scannable.Attr.ACTUAL)).isSameAs(actual); assertThat(parent.scan(Scannable.Attr.CANCELLED)).isFalse(); parent.cancelled = true; assertThat(parent.scan(Scannable.Attr.CANCELLED)).isTrue(); } }
new FluxFirstEmitting.RaceCoordinator<>(n); coordinator.subscribe(a, n, actual);
RaceCoordinator<T> coordinator = new RaceCoordinator<>(n); coordinator.subscribe(a, n, actual);
@Override public void onNext(T t) { if (won) { actual.onNext(t); } else if (parent.tryWin(index)) { won = true; actual.onNext(t); } }
@Override public void onError(Throwable t) { if (won) { actual.onError(t); } else if (parent.tryWin(index)) { won = true; actual.onError(t); } }
@Override public void onComplete() { if (won) { actual.onComplete(); } else if (parent.tryWin(index)) { won = true; actual.onComplete(); } } }
new FluxFirstEmitting.RaceCoordinator<>(n); coordinator.subscribe(a, n, actual);
@Test public void scanSubscriber() { CoreSubscriber<String> actual = new LambdaSubscriber<>(null, e -> {}, null, null); FluxFirstEmitting.RaceCoordinator<String> parent = new FluxFirstEmitting.RaceCoordinator<>(1); FluxFirstEmitting.FirstEmittingSubscriber<String> test = new FluxFirstEmitting.FirstEmittingSubscriber<>(actual, parent, 1); Subscription sub = Operators.emptySubscription(); test.onSubscribe(sub); assertThat(test.scan(Scannable.Attr.PARENT)).isSameAs(sub); assertThat(test.scan(Scannable.Attr.ACTUAL)).isSameAs(actual); assertThat(test.scan(Scannable.Attr.CANCELLED)).isFalse(); parent.cancelled = true; assertThat(test.scan(Scannable.Attr.CANCELLED)).isTrue(); }
@Override public void onError(Throwable t) { if (won) { actual.onError(t); } else if (parent.tryWin(index)) { won = true; actual.onError(t); } }
@Override public void onNext(T t) { if (won) { actual.onNext(t); } else if (parent.tryWin(index)) { won = true; actual.onNext(t); } }
@Override public void onComplete() { if (won) { actual.onComplete(); } else if (parent.tryWin(index)) { won = true; actual.onComplete(); } } }