Merge pull request #133 from violetagg/onwritepossible-concurrency

AbstractResponseBodySubscriber improvements
master
Arjen Poutsma 8 years ago committed by GitHub
commit c85d1dc126
  1. 11
      spring-web-reactive/src/main/java/org/springframework/http/server/reactive/AbstractResponseBodySubscriber.java
  2. 4
      spring-web-reactive/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java

@ -101,6 +101,16 @@ abstract class AbstractResponseBodySubscriber implements Subscriber<DataBuffer>
protected void receiveBuffer(DataBuffer dataBuffer) {
Assert.state(this.currentBuffer == null);
this.currentBuffer = dataBuffer;
checkOnWritePossible();
}
/**
* Called when a {@link DataBuffer} is received via {@link Subscriber#onNext(Object)}
* or when only partial data from the {@link DataBuffer} was written.
*/
protected void checkOnWritePossible() {
// no-op
}
/**
@ -238,6 +248,7 @@ abstract class AbstractResponseBodySubscriber implements Subscriber<DataBuffer>
}
else {
subscriber.changeState(WRITING, RECEIVED);
subscriber.checkOnWritePossible();
}
}
catch (IOException ex) {

@ -233,9 +233,7 @@ public class ServletHttpHandlerAdapter extends HttpServlet {
}
@Override
protected void receiveBuffer(DataBuffer dataBuffer) {
super.receiveBuffer(dataBuffer);
protected void checkOnWritePossible() {
try {
if (outputStream().isReady()) {
onWritePossible();

Loading…
Cancel
Save