diff options
author | Simone Bordet | 2015-02-12 18:43:40 +0000 |
---|---|---|
committer | Simone Bordet | 2015-02-12 18:43:52 +0000 |
commit | 06777355509011b2787f8f2d03ae4354ad89992d (patch) | |
tree | 65040726687b3a787e53928b5d1efcf3c7789252 /jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java | |
parent | f7b9206b2e84a33ccae5bca56e339a06a9eb5ed4 (diff) | |
download | org.eclipse.jetty.project-06777355509011b2787f8f2d03ae4354ad89992d.tar.gz org.eclipse.jetty.project-06777355509011b2787f8f2d03ae4354ad89992d.tar.xz org.eclipse.jetty.project-06777355509011b2787f8f2d03ae4354ad89992d.zip |
Simplified HTTP/2 parser and its listener.
It is not possible to perform asynchronous processing of the content
of DATA frames, because otherwise the parser has to stop, stalling
all other streams.
Parser.Listener methods were returning boolean in a vestigial attempt
to handle asynchronous data processing, and have now been converted to
return void.
Diffstat (limited to 'jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java')
-rw-r--r-- | jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java index 9c91d604e4..ddfa5b9789 100644 --- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java +++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java @@ -193,26 +193,30 @@ public class HTTP2Stream extends IdleTimeout implements IStream } @Override - public boolean process(Frame frame, Callback callback) + public void process(Frame frame, Callback callback) { notIdle(); switch (frame.getType()) { case HEADERS: { - return onHeaders((HeadersFrame)frame, callback); + onHeaders((HeadersFrame)frame, callback); + break; } case DATA: { - return onData((DataFrame)frame, callback); + onData((DataFrame)frame, callback); + break; } case RST_STREAM: { - return onReset((ResetFrame)frame, callback); + onReset((ResetFrame)frame, callback); + break; } case PUSH_PROMISE: { - return onPush((PushPromiseFrame)frame, callback); + onPush((PushPromiseFrame)frame, callback); + break; } default: { @@ -221,21 +225,19 @@ public class HTTP2Stream extends IdleTimeout implements IStream } } - private boolean onHeaders(HeadersFrame frame, Callback callback) + private void onHeaders(HeadersFrame frame, Callback callback) { updateClose(frame.isEndStream(), false); callback.succeeded(); - return false; } - private boolean onData(DataFrame frame, Callback callback) + private void onData(DataFrame frame, Callback callback) { if (getRecvWindow() < 0) { // It's a bad client, it does not deserve to be // treated gently by just resetting the stream. session.close(ErrorCode.FLOW_CONTROL_ERROR.code, "stream_window_exceeded", callback); - return true; } // SPEC: remotely closed streams must be replied with a reset. @@ -243,34 +245,29 @@ public class HTTP2Stream extends IdleTimeout implements IStream { reset(new ResetFrame(streamId, ErrorCode.STREAM_CLOSED_ERROR.code), Callback.Adapter.INSTANCE); callback.failed(new EOFException("stream_closed")); - return true; } if (isReset()) { // Just drop the frame. callback.failed(new IOException("stream_reset")); - return true; } updateClose(frame.isEndStream(), false); notifyData(this, frame, callback); - return false; } - private boolean onReset(ResetFrame frame, Callback callback) + private void onReset(ResetFrame frame, Callback callback) { remoteReset = true; callback.succeeded(); notifyReset(this, frame); - return false; } - private boolean onPush(PushPromiseFrame frame, Callback callback) + private void onPush(PushPromiseFrame frame, Callback callback) { updateClose(true, true); callback.succeeded(); - return false; } @Override @@ -337,8 +334,7 @@ public class HTTP2Stream extends IdleTimeout implements IStream return recvWindow.getAndAdd(delta); } - @Override - public void close() + private void close() { closeState.set(CloseState.CLOSED); onClose(); |