@Override protected void hookOnComplete() { this.sink.complete(); } }
@Override public void onAllPartsFinished() { if (this.terminated.getAndIncrement() == 0) { this.sink.complete(); } }
@Override protected void hookOnComplete() { this.sink.complete(); } }
@Override protected void hookOnComplete() { this.completed.set(true); if (this.dataBuffer.get() == null) { this.sink.complete(); } }
/** * Wrapper around {@link FluxSink#complete()}. */ public void complete() { fluxSink.complete(); }
@Override public void onAllPartsFinished() { if (this.terminated.getAndIncrement() == 0) { this.sink.complete(); } }
@Override protected void hookOnComplete() { this.completed.set(true); if (this.dataBuffer.get() == null) { this.sink.complete(); } }
@Override public void completed(Integer written, ByteBuffer byteBuffer) { long pos = this.position.addAndGet(written); if (byteBuffer.hasRemaining()) { this.channel.write(byteBuffer, pos, byteBuffer, this); return; } sinkDataBuffer(); Throwable throwable = this.error.get(); if (throwable != null) { this.sink.error(throwable); } else if (this.completed.get()) { this.sink.complete(); } else { request(1); } }
@Override public void completed(Integer read, DataBuffer dataBuffer) { if (read != -1) { long pos = this.position.addAndGet(read); dataBuffer.writePosition(read); this.sink.next(dataBuffer); if (!this.disposed.get()) { DataBuffer newDataBuffer = this.dataBufferFactory.allocateBuffer(this.bufferSize); ByteBuffer newByteBuffer = newDataBuffer.asByteBuffer(0, this.bufferSize); this.channel.read(newByteBuffer, pos, newDataBuffer, this); } } else { release(dataBuffer); this.sink.complete(); } }
@Test public void fluxCreateSerializedEmpty() { Flux<String> created = Flux.create(s ->{ s.complete(); }); StepVerifier.create(created) .verifyComplete(); }
@Get(value = "/headlines", produces = MediaType.TEXT_EVENT_STREAM) // <1> Flux<Event<Headline>> streamHeadlines() { return Flux.<Event<Headline>>create((emitter) -> { // <2> Headline headline = new Headline(); headline.setText("Latest Headline at " + ZonedDateTime.now()); emitter.next(Event.of(headline)); emitter.complete(); }).repeat(100) // <3> .delayElements(Duration.ofSeconds(1)); // <4> } // end::streaming[]
@Test public void fluxPush() { Flux<String> created = Flux.push(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }); assertThat(created.getPrefetch()).isEqualTo(-1); StepVerifier.create(created) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateDrop() { Flux<String> created = Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }, FluxSink.OverflowStrategy.DROP); assertThat(created.getPrefetch()).isEqualTo(-1); StepVerifier.create(created) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateLatest() { Flux<String> created = Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }, FluxSink.OverflowStrategy.LATEST); assertThat(created.getPrefetch()).isEqualTo(-1); StepVerifier.create(created) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateIgnore() { Flux<String> created = Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }, FluxSink.OverflowStrategy.IGNORE); assertThat(created.getPrefetch()).isEqualTo(-1); StepVerifier.create(created) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateSerialized2(){ StepVerifier.create(Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }).publishOn(Schedulers.parallel())) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateDrop2(){ StepVerifier.create(Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }, FluxSink.OverflowStrategy.DROP).publishOn(Schedulers.parallel())) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateError2(){ StepVerifier.create(Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }, FluxSink.OverflowStrategy.ERROR).publishOn(Schedulers.parallel())) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateLatest2(){ StepVerifier.create(Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }, FluxSink.OverflowStrategy.LATEST).publishOn(Schedulers.parallel())) .expectNext("test1", "test2", "test3") .verifyComplete(); }
@Test public void fluxCreateIgnore2(){ StepVerifier.create(Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.complete(); }, FluxSink.OverflowStrategy.IGNORE).publishOn(Schedulers.parallel())) .expectNext("test1", "test2", "test3") .verifyComplete(); }