diff options
author | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2016-12-05 11:43:52 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2016-12-05 16:45:13 +0100 |
commit | b24165041febcb27c340cffbf60af760641aa0cb (patch) | |
tree | dc26de71f5f6b3b562e9c5c0e437632c57b044da /jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ServletOutputStreamWriter.java | |
parent | aba298f30aee48fdead81eaa8ed923457f6ba4d5 (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.java | 25 |
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; + } + } + } |