Browse Source

Sync Reactor SignalEmitter

pull/1111/head
Stephane Maldini 10 years ago
parent
commit
4e8c21e85a
  1. 14
      spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java
  2. 4
      spring-web-reactive/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java

14
spring-web-reactive/src/main/java/org/springframework/core/io/buffer/support/DataBufferUtils.java

@ -30,7 +30,7 @@ import org.reactivestreams.Subscriber; @@ -30,7 +30,7 @@ import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import reactor.core.publisher.Flux;
import reactor.core.publisher.FluxSource;
import reactor.core.publisher.GenerateOutput;
import reactor.core.subscriber.SignalEmitter;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferAllocator;
@ -175,8 +175,8 @@ public abstract class DataBufferUtils { @@ -175,8 +175,8 @@ public abstract class DataBufferUtils {
}
private static class ReadableByteChannelGenerator
implements BiFunction<ReadableByteChannel, GenerateOutput<DataBuffer>,
ReadableByteChannel> {
implements BiFunction<ReadableByteChannel, SignalEmitter<DataBuffer>,
ReadableByteChannel> {
private final DataBufferAllocator allocator;
@ -189,7 +189,7 @@ public abstract class DataBufferUtils { @@ -189,7 +189,7 @@ public abstract class DataBufferUtils {
@Override
public ReadableByteChannel apply(ReadableByteChannel
channel, GenerateOutput<DataBuffer> sub) {
channel, SignalEmitter<DataBuffer> sub) {
try {
ByteBuffer byteBuffer = ByteBuffer.allocate(chunkSize);
int read;
@ -200,7 +200,7 @@ public abstract class DataBufferUtils { @@ -200,7 +200,7 @@ public abstract class DataBufferUtils {
try {
dataBuffer.write(byteBuffer);
release = false;
sub.onNext(dataBuffer);
sub.emit(dataBuffer);
}
finally {
if (release) {
@ -209,11 +209,11 @@ public abstract class DataBufferUtils { @@ -209,11 +209,11 @@ public abstract class DataBufferUtils {
}
}
else {
sub.onComplete();
sub.complete();
}
}
catch (IOException ex) {
sub.onError(ex);
sub.fail(ex);
}
return channel;
}

4
spring-web-reactive/src/test/java/org/springframework/http/server/reactive/ChannelSendOperatorTests.java

@ -110,9 +110,9 @@ public class ChannelSendOperatorTests { @@ -110,9 +110,9 @@ public class ChannelSendOperatorTests {
IllegalStateException error = new IllegalStateException("boo");
Flux<String> publisher = Flux.generate(() -> 0, (idx , subscriber) -> {
int i = ++idx;
subscriber.onNext(String.valueOf(i));
subscriber.tryEmit(String.valueOf(i));
if (i == 3) {
subscriber.onError(error);
subscriber.fail(error);
}
return i;
});

Loading…
Cancel
Save