summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2016-12-05 11:43:52 +0100
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2016-12-05 16:45:13 +0100
commitb24165041febcb27c340cffbf60af760641aa0cb (patch)
treedc26de71f5f6b3b562e9c5c0e437632c57b044da /jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
parentaba298f30aee48fdead81eaa8ed923457f6ba4d5 (diff)
Make use of noop completion handler more explicit
Move ContentResponsePart to ServletOutputStream Remove duplicate implementations of a noop completion handler Remove assumption that buffer might be null
Diffstat (limited to 'jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
index ec05f68ed01..07ed0c2e0ff 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java
@@ -18,6 +18,8 @@ import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
+import static com.yahoo.jdisc.http.server.jetty.CompletionHandlerUtils.NOOP_COMPLETION_HANDLER;
+
/**
* @author tonytv
* @author bjorncs
@@ -106,8 +108,8 @@ public class ServletOutputStreamWriter {
}
private void queueErrorContent_holdingLock(ByteBuffer errorContent) {
- responseContentQueue.addLast(new ResponseContentPart(errorContent, null));
- responseContentQueue.addLast(new ResponseContentPart(CLOSE_STREAM_BUFFER, null));
+ responseContentQueue.addLast(new ResponseContentPart(errorContent, NOOP_COMPLETION_HANDLER));
+ responseContentQueue.addLast(new ResponseContentPart(CLOSE_STREAM_BUFFER, NOOP_COMPLETION_HANDLER));
}
public void writeBuffer(ByteBuffer buf, CompletionHandler handler) {
@@ -115,12 +117,9 @@ public class ServletOutputStreamWriter {
synchronized (monitor) {
if (state == State.FINISHED_OR_ERROR) {
- if (handler != null) {
- executor.execute(() -> handler.failed(new IllegalStateException("ContentChannel already closed.")));
- }
+ executor.execute(() -> handler.failed(new IllegalStateException("ContentChannel already closed.")));
return;
}
-
responseContentQueue.addLast(new ResponseContentPart(buf, handler));
switch (state) {
case NOT_STARTED:
@@ -148,6 +147,10 @@ public class ServletOutputStreamWriter {
writeBuffer(CLOSE_STREAM_BUFFER, handler);
}
+ public void close() {
+ close(NOOP_COMPLETION_HANDLER);
+ }
+
private void writeBuffersInQueueToOutputStream() {
boolean lastOperationWasFlush = false;
@@ -307,4 +310,14 @@ public class ServletOutputStreamWriter {
}
};
+ private static class ResponseContentPart {
+ public final ByteBuffer buf;
+ public final CompletionHandler handler;
+
+ public ResponseContentPart(ByteBuffer buf, CompletionHandler handler) {
+ this.buf = buf;
+ this.handler = handler;
+ }
+ }
+
}