protected InstanceEventPublisher() { UnicastProcessor<InstanceEvent> unicastProcessor = UnicastProcessor.create(); this.publishedFlux = unicastProcessor.publish().autoConnect(0); this.sink = unicastProcessor.sink(); }
private SubmissionPublisher(Scheduler scheduler, int maxBufferCapacity) { if (scheduler == null){ throw new NullPointerException(); } if (maxBufferCapacity <= 0){ throw new IllegalArgumentException("capacity must be positive"); } UnicastProcessor<T> processor = UnicastProcessor.<T>create(); sink = processor.sink(); flux = processor .publish(maxBufferCapacity) .autoConnect() .subscribeOn(Schedulers.immediate()) .publishOn(scheduler); numberOfSubscribers = new AtomicInteger(0); }
@Test public void subsequentSumAsync() { AssertSubscriber<Integer> ts = AssertSubscriber.create(); UnicastProcessor<Integer> up = UnicastProcessor.create(Queues.<Integer>get(16).get()); up.publish(o -> zip((Object[] a) -> (Integer) a[0] + (Integer) a[1], o, o.skip(1))) .subscribe(ts); up.onNext(1); up.onNext(2); up.onNext(3); up.onNext(4); up.onNext(5); up.onComplete(); ts.assertValues(1 + 2, 2 + 3, 3 + 4, 4 + 5) .assertNoError() .assertComplete(); }
@Test public void normalAsyncFused() { AssertSubscriber<Integer> ts1 = AssertSubscriber.create(); AssertSubscriber<Integer> ts2 = AssertSubscriber.create(); UnicastProcessor<Integer> up = UnicastProcessor.create(Queues.<Integer>get(8).get()); up.onNext(1); up.onNext(2); up.onNext(3); up.onNext(4); up.onNext(5); up.onComplete(); ConnectableFlux<Integer> p = up.publish(); p.subscribe(ts1); p.subscribe(ts2); ts1 .assertNoValues() .assertNoError() .assertNotComplete(); ts2 .assertNoValues() .assertNoError() .assertNotComplete(); p.connect(); ts1.assertValues(1, 2, 3, 4, 5) .assertNoError() .assertComplete(); ts2.assertValues(1, 2, 3, 4, 5) .assertNoError() .assertComplete(); }
up.onComplete(); ConnectableFlux<Integer> p = up.publish();
private SubmissionPublisher(Scheduler scheduler, int maxBufferCapacity) { if (scheduler == null){ throw new NullPointerException(); } if (maxBufferCapacity <= 0){ throw new IllegalArgumentException("capacity must be positive"); } UnicastProcessor<T> processor = UnicastProcessor.<T>create(); sink = processor.sink(); flux = processor .publish(maxBufferCapacity) .autoConnect() .subscribeOn(Schedulers.immediate()) .publishOn(scheduler); numberOfSubscribers = new AtomicInteger(0); }