You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/10/10 14:24:54 UTC
svn commit: r1764106 - /tomcat/trunk/java/org/apache/coyote/http2/
Author: markt
Date: Mon Oct 10 14:24:54 2016
New Revision: 1764106
URL: http://svn.apache.org/viewvc?rev=1764106&view=rev
Log:
Reduce visibility as recommended by UCdetector
Remove unused code
Modified:
tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java
tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java
tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java
tomcat/trunk/java/org/apache/coyote/http2/Flags.java
tomcat/trunk/java/org/apache/coyote/http2/FrameType.java
tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java
tomcat/trunk/java/org/apache/coyote/http2/Hpack.java
tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java
tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java
tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java
tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
tomcat/trunk/java/org/apache/coyote/http2/Setting.java
tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java
Modified: tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsBase.java Mon Oct 10 14:24:54 2016
@@ -23,7 +23,7 @@ import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.res.StringManager;
-public abstract class ConnectionSettingsBase<T extends Throwable> {
+abstract class ConnectionSettingsBase<T extends Throwable> {
private final Log log = LogFactory.getLog(ConnectionSettingsBase.class);
private final StringManager sm = StringManager.getManager(ConnectionSettingsBase.class);
@@ -31,25 +31,25 @@ public abstract class ConnectionSettings
private final String connectionId;
// Limits
- protected static final int MAX_WINDOW_SIZE = (1 << 31) - 1;
- protected static final int MIN_MAX_FRAME_SIZE = 1 << 14;
- protected static final int MAX_MAX_FRAME_SIZE = (1 << 24) - 1;
- protected static final long UNLIMITED = ((long)1 << 32); // Use the maximum possible
- protected static final int MAX_HEADER_TABLE_SIZE = 1 << 16;
+ static final int MAX_WINDOW_SIZE = (1 << 31) - 1;
+ static final int MIN_MAX_FRAME_SIZE = 1 << 14;
+ static final int MAX_MAX_FRAME_SIZE = (1 << 24) - 1;
+ static final long UNLIMITED = ((long)1 << 32); // Use the maximum possible
+ static final int MAX_HEADER_TABLE_SIZE = 1 << 16;
// Defaults
- protected static final int DEFAULT_HEADER_TABLE_SIZE = 4096;
- protected static final boolean DEFAULT_ENABLE_PUSH = true;
- protected static final long DEFAULT_MAX_CONCURRENT_STREAMS = UNLIMITED;
- protected static final int DEFAULT_INITIAL_WINDOW_SIZE = (1 << 16) - 1;
- protected static final int DEFAULT_MAX_FRAME_SIZE = MIN_MAX_FRAME_SIZE;
- protected static final long DEFAULT_MAX_HEADER_LIST_SIZE = UNLIMITED;
+ static final int DEFAULT_HEADER_TABLE_SIZE = 4096;
+ static final boolean DEFAULT_ENABLE_PUSH = true;
+ static final long DEFAULT_MAX_CONCURRENT_STREAMS = UNLIMITED;
+ static final int DEFAULT_INITIAL_WINDOW_SIZE = (1 << 16) - 1;
+ static final int DEFAULT_MAX_FRAME_SIZE = MIN_MAX_FRAME_SIZE;
+ static final long DEFAULT_MAX_HEADER_LIST_SIZE = UNLIMITED;
- protected Map<Setting,Long> current = new HashMap<>();
- protected Map<Setting,Long> pending = new HashMap<>();
+ Map<Setting,Long> current = new HashMap<>();
+ Map<Setting,Long> pending = new HashMap<>();
- public ConnectionSettingsBase(String connectionId) {
+ ConnectionSettingsBase(String connectionId) {
this.connectionId = connectionId;
// Set up the defaults
current.put(Setting.HEADER_TABLE_SIZE, Long.valueOf(DEFAULT_HEADER_TABLE_SIZE));
@@ -61,7 +61,7 @@ public abstract class ConnectionSettings
}
- public void set(Setting setting, long value) throws T {
+ final void set(Setting setting, long value) throws T {
if (log.isDebugEnabled()) {
log.debug(sm.getString("connectionSettings.debug",
connectionId, setting, Long.toString(value)));
@@ -102,33 +102,33 @@ public abstract class ConnectionSettings
}
- public int getHeaderTableSize() {
+ final int getHeaderTableSize() {
return getMinInt(Setting.HEADER_TABLE_SIZE);
}
- public boolean getEnablePush() {
+ final boolean getEnablePush() {
long result = getMin(Setting.ENABLE_PUSH);
return result != 0;
}
- public long getMaxConcurrentStreams() {
+ final long getMaxConcurrentStreams() {
return getMax(Setting.MAX_CONCURRENT_STREAMS);
}
- public int getInitialWindowSize() {
+ final int getInitialWindowSize() {
return getMaxInt(Setting.INITIAL_WINDOW_SIZE);
}
- public int getMaxFrameSize() {
+ final int getMaxFrameSize() {
return getMaxInt(Setting.MAX_FRAME_SIZE);
}
- public long getMaxHeaderListSize() {
+ final long getMaxHeaderListSize() {
return getMax(Setting.MAX_HEADER_LIST_SIZE);
}
Modified: tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsLocal.java Mon Oct 10 14:24:54 2016
@@ -30,18 +30,18 @@ import java.util.Map;
* client will respond (almost certainly by closing the connection) as defined
* in the HTTP/2 specification.
*/
-public class ConnectionSettingsLocal extends ConnectionSettingsBase<IllegalArgumentException> {
+class ConnectionSettingsLocal extends ConnectionSettingsBase<IllegalArgumentException> {
private boolean sendInProgress = false;
- public ConnectionSettingsLocal(String connectionId) {
+ ConnectionSettingsLocal(String connectionId) {
super(connectionId);
}
@Override
- protected synchronized void set(Setting setting, Long value) {
+ final synchronized void set(Setting setting, Long value) {
checkSend();
if (current.get(setting).longValue() == value.longValue()) {
pending.remove(setting);
@@ -51,7 +51,7 @@ public class ConnectionSettingsLocal ext
}
- synchronized byte[] getSettingsFrameForPending() {
+ final synchronized byte[] getSettingsFrameForPending() {
checkSend();
int payloadSize = pending.size() * 6;
byte[] result = new byte[9 + payloadSize];
@@ -73,7 +73,7 @@ public class ConnectionSettingsLocal ext
}
- synchronized boolean ack() {
+ final synchronized boolean ack() {
if (sendInProgress) {
sendInProgress = false;
current.putAll(pending);
@@ -94,7 +94,7 @@ public class ConnectionSettingsLocal ext
@Override
- void throwException(String msg, Http2Error error) throws IllegalArgumentException {
+ final void throwException(String msg, Http2Error error) throws IllegalArgumentException {
throw new IllegalArgumentException(msg);
}
}
Modified: tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/ConnectionSettingsRemote.java Mon Oct 10 14:24:54 2016
@@ -20,15 +20,15 @@ package org.apache.coyote.http2;
* Represents the remote connection settings: i.e. the settings the server must
* use when communicating with the client.
*/
-public class ConnectionSettingsRemote extends ConnectionSettingsBase<ConnectionException> {
+class ConnectionSettingsRemote extends ConnectionSettingsBase<ConnectionException> {
- public ConnectionSettingsRemote(String connectionId) {
+ ConnectionSettingsRemote(String connectionId) {
super(connectionId);
}
@Override
- void throwException(String msg, Http2Error error) throws ConnectionException {
+ final void throwException(String msg, Http2Error error) throws ConnectionException {
throw new ConnectionException(msg, error);
}
}
Modified: tomcat/trunk/java/org/apache/coyote/http2/Flags.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Flags.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Flags.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Flags.java Mon Oct 10 14:24:54 2016
@@ -16,34 +16,34 @@
*/
package org.apache.coyote.http2;
-public class Flags {
+class Flags {
private Flags() {
// Utility class. Hide default constructor
}
- public static boolean isEndOfStream(int flags) {
+ static boolean isEndOfStream(int flags) {
return (flags & 0x01) > 0;
}
- public static boolean isAck(int flags) {
+ static boolean isAck(int flags) {
return (flags & 0x01) > 0;
}
- public static boolean isEndOfHeaders(int flags) {
+ static boolean isEndOfHeaders(int flags) {
return (flags & 0x04) > 0;
}
- public static boolean hasPadding(int flags) {
+ static boolean hasPadding(int flags) {
return (flags & 0x08) > 0;
}
- public static boolean hasPriority(int flags) {
+ static boolean hasPriority(int flags) {
return (flags & 0x20) > 0;
}
}
Modified: tomcat/trunk/java/org/apache/coyote/http2/FrameType.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/FrameType.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/FrameType.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/FrameType.java Mon Oct 10 14:24:54 2016
@@ -20,7 +20,7 @@ import java.util.function.IntPredicate;
import org.apache.tomcat.util.res.StringManager;
-public enum FrameType {
+enum FrameType {
DATA (0, false, true, null, false),
HEADERS (1, false, true, null, true),
@@ -53,12 +53,12 @@ public enum FrameType {
}
- public byte getIdByte() {
+ byte getIdByte() {
return (byte) id;
}
- public void check(int streamId, int payloadSize) throws Http2Exception {
+ void check(int streamId, int payloadSize) throws Http2Exception {
// Is FrameType valid for the given stream?
if (streamId == 0 && !streamZero || streamId != 0 && !streamNonZero) {
throw new ConnectionException(sm.getString("frameType.checkStream", this),
@@ -80,7 +80,7 @@ public enum FrameType {
}
- public static FrameType valueOf(int i) {
+ static FrameType valueOf(int i) {
switch(i) {
case 0:
return DATA;
Modified: tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/HeaderSink.java Mon Oct 10 14:24:54 2016
@@ -23,7 +23,7 @@ import org.apache.coyote.http2.HpackDeco
* the connection close process has started if headers for new streams are
* received.
*/
-public class HeaderSink implements HeaderEmitter {
+class HeaderSink implements HeaderEmitter {
@Override
public void emitHeader(String name, String value, boolean neverIndex) {
Modified: tomcat/trunk/java/org/apache/coyote/http2/Hpack.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Hpack.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Hpack.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Hpack.java Mon Oct 10 14:24:54 2016
@@ -22,7 +22,7 @@ import org.apache.tomcat.util.res.String
final class Hpack {
- static final StringManager sm = StringManager.getManager(Hpack.class);
+ private static final StringManager sm = StringManager.getManager(Hpack.class);
private static final byte LOWER_DIFF = 'a' - 'A';
static final int DEFAULT_TABLE_SIZE = 4096;
Modified: tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/HpackDecoder.java Mon Oct 10 14:24:54 2016
@@ -63,12 +63,12 @@ public class HpackDecoder {
private final StringBuilder stringBuilder = new StringBuilder();
- public HpackDecoder(int maxMemorySize) {
+ HpackDecoder(int maxMemorySize) {
this.maxMemorySize = maxMemorySize;
headerTable = new Hpack.HeaderField[DEFAULT_RING_BUFFER_SIZE];
}
- public HpackDecoder() {
+ HpackDecoder() {
this(Hpack.DEFAULT_TABLE_SIZE);
}
@@ -81,7 +81,7 @@ public class HpackDecoder {
*
* @throws HpackException If the packed data is not valid
*/
- public void decode(ByteBuffer buffer) throws HpackException {
+ void decode(ByteBuffer buffer) throws HpackException {
while (buffer.hasRemaining()) {
int originalPos = buffer.position();
byte b = buffer.get();
@@ -326,16 +326,16 @@ public class HpackDecoder {
/**
* Interface that can be used to immediately validate headers (ex: uppercase detection).
*/
- public interface HeaderEmitter {
+ interface HeaderEmitter {
void emitHeader(String name, String value, boolean neverIndex);
}
- public HeaderEmitter getHeaderEmitter() {
+ HeaderEmitter getHeaderEmitter() {
return headerEmitter;
}
- public void setHeaderEmitter(HeaderEmitter headerEmitter) {
+ void setHeaderEmitter(HeaderEmitter headerEmitter) {
this.headerEmitter = headerEmitter;
}
Modified: tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/HpackEncoder.java Mon Oct 10 14:24:54 2016
@@ -34,12 +34,12 @@ import org.apache.tomcat.util.res.String
/**
* Encoder for HPACK frames.
*/
-public class HpackEncoder {
+class HpackEncoder {
private static final Log log = LogFactory.getLog(HpackEncoder.class);
private static final StringManager sm = StringManager.getManager(HpackEncoder.class);
- public static final HpackHeaderFunction DEFAULT_HEADER_FUNCTION = new HpackHeaderFunction() {
+ private static final HpackHeaderFunction DEFAULT_HEADER_FUNCTION = new HpackHeaderFunction() {
@Override
public boolean shouldUseIndexing(String headerName, String value) {
//content length and date change all the time
@@ -104,13 +104,9 @@ public class HpackEncoder {
private final HpackHeaderFunction hpackHeaderFunction;
- public HpackEncoder(int maxTableSize, HpackHeaderFunction headerFunction) {
+ HpackEncoder(int maxTableSize) {
this.maxTableSize = maxTableSize;
- this.hpackHeaderFunction = headerFunction;
- }
-
- public HpackEncoder(int maxTableSize) {
- this(maxTableSize, DEFAULT_HEADER_FUNCTION);
+ this.hpackHeaderFunction = DEFAULT_HEADER_FUNCTION;
}
/**
@@ -121,7 +117,7 @@ public class HpackEncoder {
*
* @return The state of the encoding process
*/
- public State encode(MimeHeaders headers, ByteBuffer target) {
+ State encode(MimeHeaders headers, ByteBuffer target) {
int it = headersIterator;
if (headersIterator == -1) {
handleTableSizeChange(target);
@@ -250,7 +246,7 @@ public class HpackEncoder {
}
existing.add(d);
evictionQueue.add(d);
- currentTableSize += d.size;
+ currentTableSize += d.getSize();
runEvictionIfRequired();
if (entryPositionCounter == Integer.MAX_VALUE) {
//prevent rollover
@@ -335,19 +331,19 @@ public class HpackEncoder {
minNewMaxHeaderSize = -1;
}
- public enum State {
+ enum State {
COMPLETE,
UNDERFLOW,
}
- static class TableEntry {
- final String name;
- final String value;
- final int size;
- int position;
+ private static class TableEntry {
+ private final String name;
+ private final String value;
+ private final int size;
+ private int position;
- TableEntry(String name, String value, int position) {
+ private TableEntry(String name, String value, int position) {
this.name = name;
this.value = value;
this.position = position;
@@ -358,24 +354,28 @@ public class HpackEncoder {
}
}
- public int getPosition() {
+ int getPosition() {
return position;
}
+
+ int getSize() {
+ return size;
+ }
}
- class DynamicTableEntry extends TableEntry {
+ private class DynamicTableEntry extends TableEntry {
- DynamicTableEntry(String name, String value, int position) {
+ private DynamicTableEntry(String name, String value, int position) {
super(name, value, position);
}
@Override
- public int getPosition() {
+ int getPosition() {
return super.getPosition() + entryPositionCounter + Hpack.STATIC_TABLE_LENGTH;
}
}
- public interface HpackHeaderFunction {
+ private interface HpackHeaderFunction {
boolean shouldUseIndexing(String header, String value);
/**
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2Error.java Mon Oct 10 14:24:54 2016
@@ -16,7 +16,7 @@
*/
package org.apache.coyote.http2;
-public enum Http2Error {
+enum Http2Error {
NO_ERROR (0x00),
PROTOCOL_ERROR (0x01),
@@ -40,12 +40,12 @@ public enum Http2Error {
}
- public long getCode() {
+ long getCode() {
return code;
}
- public byte[] getCodeBytes() {
+ byte[] getCodeBytes() {
byte[] codeByte = new byte[4];
ByteUtil.setFourBytes(codeByte, 0, code);
return codeByte;
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Mon Oct 10 14:24:54 2016
@@ -71,7 +71,7 @@ import org.apache.tomcat.util.res.String
* </li>
* </ul>
*/
-public class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeHandler,
+class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeHandler,
Input, Output {
private static final Log log = LogFactory.getLog(Http2UpgradeHandler.class);
@@ -144,7 +144,7 @@ public class Http2UpgradeHandler extends
private AtomicInteger streamConcurrency = null;
private Queue<StreamProcessor> queuedProcessors = null;
- public Http2UpgradeHandler(Adapter adapter, Request coyoteRequest) {
+ Http2UpgradeHandler(Adapter adapter, Request coyoteRequest) {
super (STREAM_ID_ZERO);
this.adapter = adapter;
this.connectionId = Integer.toString(connectionIdGenerator.getAndIncrement());
@@ -573,7 +573,7 @@ public class Http2UpgradeHandler extends
}
- void writePushHeaders(Stream stream, int pushedStreamId, Request coyoteRequest, int payloadSize)
+ private void writePushHeaders(Stream stream, int pushedStreamId, Request coyoteRequest, int payloadSize)
throws IOException {
if (log.isDebugEnabled()) {
log.debug(sm.getString("upgradeHandler.writePushHeaders", connectionId,
Modified: tomcat/trunk/java/org/apache/coyote/http2/Setting.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Setting.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Setting.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Setting.java Mon Oct 10 14:24:54 2016
@@ -16,7 +16,7 @@
*/
package org.apache.coyote.http2;
-public enum Setting {
+enum Setting {
HEADER_TABLE_SIZE(1),
ENABLE_PUSH(2),
MAX_CONCURRENT_STREAMS(3),
@@ -31,16 +31,16 @@ public enum Setting {
this.id = id;
}
- public int getId() {
+ final int getId() {
return id;
}
@Override
- public String toString() {
+ public final String toString() {
return Integer.toString(id);
}
- public static Setting valueOf(int i) {
+ static final Setting valueOf(int i) {
switch(i) {
case 1: {
return HEADER_TABLE_SIZE;
Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Mon Oct 10 14:24:54 2016
@@ -32,7 +32,7 @@ import org.apache.tomcat.util.net.Socket
import org.apache.tomcat.util.net.SocketWrapperBase;
import org.apache.tomcat.util.res.StringManager;
-public class StreamProcessor extends AbstractProcessor implements Runnable {
+class StreamProcessor extends AbstractProcessor implements Runnable {
private static final Log log = LogFactory.getLog(StreamProcessor.class);
private static final StringManager sm = StringManager.getManager(StreamProcessor.class);
@@ -41,7 +41,7 @@ public class StreamProcessor extends Abs
private final Stream stream;
- public StreamProcessor(Http2UpgradeHandler handler, Stream stream, Adapter adapter, SocketWrapperBase<?> socketWrapper) {
+ StreamProcessor(Http2UpgradeHandler handler, Stream stream, Adapter adapter, SocketWrapperBase<?> socketWrapper) {
super(stream.getCoyoteRequest(), stream.getCoyoteResponse());
this.handler = handler;
this.stream = stream;
@@ -51,7 +51,7 @@ public class StreamProcessor extends Abs
@Override
- public void run() {
+ public final void run() {
try {
// FIXME: the regular processor syncs on socketWrapper, but here this deadlocks
synchronized (this) {
@@ -192,7 +192,7 @@ public class StreamProcessor extends Abs
@Override
- public void recycle() {
+ public final void recycle() {
// StreamProcessor instances are not re-used.
// Clear fields that can be cleared to aid GC and trigger NPEs if this
// is reused
@@ -202,19 +202,19 @@ public class StreamProcessor extends Abs
@Override
- protected Log getLog() {
+ protected final Log getLog() {
return log;
}
@Override
- public void pause() {
+ public final void pause() {
// NO-OP. Handled by the Http2UpgradeHandler
}
@Override
- public SocketState service(SocketWrapperBase<?> socket) throws IOException {
+ public final SocketState service(SocketWrapperBase<?> socket) throws IOException {
try {
adapter.service(request, response);
} catch (Exception e) {
@@ -239,7 +239,7 @@ public class StreamProcessor extends Abs
@Override
- protected boolean flushBufferedWrite() throws IOException {
+ protected final boolean flushBufferedWrite() throws IOException {
if (stream.getOutputBuffer().flush(false)) {
// The buffer wasn't fully flushed so re-register the
// stream for write. Note this does not go via the
@@ -259,7 +259,7 @@ public class StreamProcessor extends Abs
@Override
- protected SocketState dispatchEndRequest() {
+ protected final SocketState dispatchEndRequest() {
return SocketState.CLOSED;
}
}
Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java?rev=1764106&r1=1764105&r2=1764106&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamStateMachine.java Mon Oct 10 14:24:54 2016
@@ -33,7 +33,7 @@ import org.apache.tomcat.util.res.String
* </ul>
*
*/
-public class StreamStateMachine {
+class StreamStateMachine {
private static final Log log = LogFactory.getLog(StreamStateMachine.class);
private static final StringManager sm = StringManager.getManager(StreamStateMachine.class);
@@ -42,69 +42,36 @@ public class StreamStateMachine {
private State state;
- public StreamStateMachine(Stream stream) {
+ StreamStateMachine(Stream stream) {
this.stream = stream;
stateChange(null, State.IDLE);
}
- public synchronized void sentPushPromise() {
+ final synchronized void sentPushPromise() {
stateChange(State.IDLE, State.RESERVED_LOCAL);
}
- public synchronized void receivedPushPromise() {
- stateChange(State.IDLE, State.RESERVED_REMOTE);
- }
-
-
- public synchronized void sentStartOfHeaders() {
- stateChange(State.IDLE, State.OPEN);
- stateChange(State.RESERVED_LOCAL, State.HALF_CLOSED_REMOTE);
- }
-
-
- public synchronized void receivedStartOfHeaders() {
+ final synchronized void receivedStartOfHeaders() {
stateChange(State.IDLE, State.OPEN);
stateChange(State.RESERVED_REMOTE, State.HALF_CLOSED_LOCAL);
}
- public synchronized void sentEndOfStream() {
+ final synchronized void sentEndOfStream() {
stateChange(State.OPEN, State.HALF_CLOSED_LOCAL);
stateChange(State.HALF_CLOSED_REMOTE, State.CLOSED_TX);
}
- public synchronized void recievedEndOfStream() {
+ final synchronized void recievedEndOfStream() {
stateChange(State.OPEN, State.HALF_CLOSED_REMOTE);
stateChange(State.HALF_CLOSED_LOCAL, State.CLOSED_RX);
}
- /**
- * Marks the stream as reset. This method will not change the stream state
- * if:
- * <ul>
- * <li>The stream is already reset</li>
- * <li>The stream is already closed</li>
- * </ul>
- *
- * @throws IllegalStateException If the stream is in a state that does not
- * permit resets
- */
- public synchronized void sendReset() {
- if (state == State.IDLE) {
- throw new IllegalStateException(sm.getString("streamStateMachine.debug.change",
- stream.getConnectionId(), stream.getIdentifier(), state));
- }
- if (state.canReset()) {
- stateChange(state, State.CLOSED_RST_TX);
- }
- }
-
-
- public synchronized void receiveReset() {
+ final synchronized void receiveReset() {
stateChange(state, State.CLOSED_RST_RX);
}
@@ -120,7 +87,7 @@ public class StreamStateMachine {
}
- public synchronized void checkFrameType(FrameType frameType) throws Http2Exception {
+ final synchronized void checkFrameType(FrameType frameType) throws Http2Exception {
// No state change. Checks that receiving the frame type is valid for
// the current state of this stream.
if (!isFrameTypePermitted(frameType)) {
@@ -137,96 +104,82 @@ public class StreamStateMachine {
}
- public synchronized boolean isFrameTypePermitted(FrameType frameType) {
+ final synchronized boolean isFrameTypePermitted(FrameType frameType) {
return state.isFrameTypePermitted(frameType);
}
- public synchronized boolean isActive() {
+ final synchronized boolean isActive() {
return state.isActive();
}
- public synchronized boolean canRead() {
+ final synchronized boolean canRead() {
return state.canRead();
}
- public synchronized boolean canWrite() {
+ final synchronized boolean canWrite() {
return state.canWrite();
}
- public synchronized boolean isClosedFinal() {
+ final synchronized boolean isClosedFinal() {
return state == State.CLOSED_FINAL;
}
- public synchronized void closeIfIdle() {
+ final synchronized void closeIfIdle() {
stateChange(State.IDLE, State.CLOSED_FINAL);
}
private enum State {
- IDLE (false, false, false, true,
- Http2Error.PROTOCOL_ERROR, FrameType.HEADERS,
- FrameType.PRIORITY),
- OPEN (true, true, true, true,
- Http2Error.PROTOCOL_ERROR, FrameType.DATA,
- FrameType.HEADERS,
- FrameType.PRIORITY,
- FrameType.RST,
- FrameType.PUSH_PROMISE,
- FrameType.WINDOW_UPDATE),
- RESERVED_LOCAL (false, false, true, true,
- Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY,
- FrameType.RST,
- FrameType.WINDOW_UPDATE),
- RESERVED_REMOTE (false, false, true, true,
- Http2Error.PROTOCOL_ERROR, FrameType.HEADERS,
- FrameType.PRIORITY,
- FrameType.RST),
- HALF_CLOSED_LOCAL (true, false, true, true,
- Http2Error.PROTOCOL_ERROR, FrameType.DATA,
- FrameType.HEADERS,
- FrameType.PRIORITY,
- FrameType.RST,
- FrameType.PUSH_PROMISE,
- FrameType.WINDOW_UPDATE),
- HALF_CLOSED_REMOTE (false, true, true, true,
- Http2Error.STREAM_CLOSED, FrameType.PRIORITY,
- FrameType.RST,
- FrameType.WINDOW_UPDATE),
- CLOSED_RX (false, false, false, true,
- Http2Error.STREAM_CLOSED, FrameType.PRIORITY),
- CLOSED_TX (false, false, false, true,
- Http2Error.STREAM_CLOSED, FrameType.PRIORITY,
- FrameType.RST,
- FrameType.WINDOW_UPDATE),
- CLOSED_RST_RX (false, false, false, false,
- Http2Error.STREAM_CLOSED, FrameType.PRIORITY),
- CLOSED_RST_TX (false, false, false, false,
- Http2Error.STREAM_CLOSED, FrameType.DATA,
- FrameType.HEADERS,
- FrameType.PRIORITY,
- FrameType.RST,
- FrameType.PUSH_PROMISE,
- FrameType.WINDOW_UPDATE),
- CLOSED_FINAL (false, false, false, true,
- Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY);
+ IDLE (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.HEADERS,
+ FrameType.PRIORITY),
+ OPEN (true, true, true, Http2Error.PROTOCOL_ERROR, FrameType.DATA,
+ FrameType.HEADERS,
+ FrameType.PRIORITY,
+ FrameType.RST,
+ FrameType.PUSH_PROMISE,
+ FrameType.WINDOW_UPDATE),
+ RESERVED_LOCAL (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY,
+ FrameType.RST,
+ FrameType.WINDOW_UPDATE),
+ RESERVED_REMOTE (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.HEADERS,
+ FrameType.PRIORITY,
+ FrameType.RST),
+ HALF_CLOSED_LOCAL (true, false, true, Http2Error.PROTOCOL_ERROR, FrameType.DATA,
+ FrameType.HEADERS,
+ FrameType.PRIORITY,
+ FrameType.RST,
+ FrameType.PUSH_PROMISE,
+ FrameType.WINDOW_UPDATE),
+ HALF_CLOSED_REMOTE (false, true, true, Http2Error.STREAM_CLOSED, FrameType.PRIORITY,
+ FrameType.RST,
+ FrameType.WINDOW_UPDATE),
+ CLOSED_RX (false, false, true, Http2Error.STREAM_CLOSED, FrameType.PRIORITY),
+ CLOSED_TX (false, false, true, Http2Error.STREAM_CLOSED, FrameType.PRIORITY,
+ FrameType.RST,
+ FrameType.WINDOW_UPDATE),
+ CLOSED_RST_RX (false, false, false, Http2Error.STREAM_CLOSED, FrameType.PRIORITY),
+ CLOSED_RST_TX (false, false, false, Http2Error.STREAM_CLOSED, FrameType.DATA,
+ FrameType.HEADERS,
+ FrameType.PRIORITY,
+ FrameType.RST,
+ FrameType.PUSH_PROMISE,
+ FrameType.WINDOW_UPDATE),
+ CLOSED_FINAL (false, false, true, Http2Error.PROTOCOL_ERROR, FrameType.PRIORITY);
private final boolean canRead;
private final boolean canWrite;
- private final boolean canReset;
private final boolean connectionErrorForInvalidFrame;
private final Http2Error errorCodeForInvalidFrame;
private final Set<FrameType> frameTypesPermitted = new HashSet<>();
- private State(boolean canRead, boolean canWrite, boolean canReset,
- boolean connectionErrorForInvalidFrame, Http2Error errorCode,
- FrameType... frameTypes) {
+ private State(boolean canRead, boolean canWrite, boolean connectionErrorForInvalidFrame,
+ Http2Error errorCode, FrameType... frameTypes) {
this.canRead = canRead;
this.canWrite = canWrite;
- this.canReset = canReset;
this.connectionErrorForInvalidFrame = connectionErrorForInvalidFrame;
this.errorCodeForInvalidFrame = errorCode;
for (FrameType frameType : frameTypes) {
@@ -246,10 +199,6 @@ public class StreamStateMachine {
return canWrite;
}
- public boolean canReset() {
- return canReset;
- }
-
public boolean isFrameTypePermitted(FrameType frameType) {
return frameTypesPermitted.contains(frameType);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org