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 2017/09/05 09:43:50 UTC

svn commit: r1807326 - in /tomcat/trunk/java/org/apache/coyote/http2: Http2AsyncUpgradeHandler.java Http2Protocol.java Http2UpgradeHandler.java

Author: markt
Date: Tue Sep  5 09:43:49 2017
New Revision: 1807326

URL: http://svn.apache.org/viewvc?rev=1807326&view=rev
Log:
Refactor: Obtain timeouts directly from protocol

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java?rev=1807326&r1=1807325&r2=1807326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java Tue Sep  5 09:43:49 2017
@@ -71,8 +71,8 @@ public class Http2AsyncUpgradeHandler ex
     @Override
     protected void writeSettings() {
         // Send the initial settings frame
-        socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+        socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
                 ByteBuffer.wrap(localSettings.getSettingsFrameForPending()));
         if (error != null) {
             String msg = sm.getString("upgradeHandler.sendPrefaceFail", connectionId);
@@ -101,8 +101,8 @@ public class Http2AsyncUpgradeHandler ex
         ByteUtil.set31Bits(rstFrame, 5, se.getStreamId());
         // Payload
         ByteUtil.setFourBytes(rstFrame, 9, se.getError().getCode());
-        socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+        socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
                 ByteBuffer.wrap(rstFrame));
         handleAsyncException();
     }
@@ -121,13 +121,15 @@ public class Http2AsyncUpgradeHandler ex
         byte[] payloadLength = new byte[3];
         ByteUtil.setThreeBytes(payloadLength, 0, len);
         if (debugMsg != null) {
-            socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                    null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
-                    ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY), ByteBuffer.wrap(fixedPayload), ByteBuffer.wrap(debugMsg));
+            socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                    TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+                    ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY),
+                    ByteBuffer.wrap(fixedPayload), ByteBuffer.wrap(debugMsg));
         } else {
-            socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                    null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
-                    ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY), ByteBuffer.wrap(fixedPayload));
+            socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                    TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+                    ByteBuffer.wrap(payloadLength), ByteBuffer.wrap(GOAWAY),
+                    ByteBuffer.wrap(fixedPayload));
         }
         handleAsyncException();
     }
@@ -171,9 +173,9 @@ public class Http2AsyncUpgradeHandler ex
             ByteUtil.set31Bits(header, 5, stream.getIdentifier().intValue());
             int orgLimit = data.limit();
             data.limit(data.position() + len);
-            socketWrapper.write(BlockingMode.BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                    null, SocketWrapperBase.COMPLETE_WRITE, applicationErrorCompletion,
-                    ByteBuffer.wrap(header), data);
+            socketWrapper.write(BlockingMode.BLOCK, protocol.getWriteTimeout(),
+                    TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+                    applicationErrorCompletion, ByteBuffer.wrap(header), data);
             data.limit(orgLimit);
             handleAsyncException();
         }
@@ -197,8 +199,8 @@ public class Http2AsyncUpgradeHandler ex
         frame2[3] = FrameType.WINDOW_UPDATE.getIdByte();
         ByteUtil.set31Bits(frame2, 9, increment);
         ByteUtil.set31Bits(frame2, 5, stream.getIdentifier().intValue());
-        socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+        socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
                 ByteBuffer.wrap(frame), ByteBuffer.wrap(frame2));
         handleAsyncException();
     }
@@ -212,8 +214,8 @@ public class Http2AsyncUpgradeHandler ex
                 log.warn(sm.getString("upgradeHandler.unexpectedAck", connectionId, getIdentifier()));
             }
         } else {
-            socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                    null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
+            socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                    TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
                     ByteBuffer.wrap(SETTINGS_ACK));
         }
         handleAsyncException();
@@ -243,9 +245,9 @@ public class Http2AsyncUpgradeHandler ex
                 PingRecord pingRecord = new PingRecord(sentSequence, now);
                 inflightPings.add(pingRecord);
                 ByteUtil.set31Bits(payload, 4, sentSequence);
-                socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                        null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
-                        ByteBuffer.wrap(PING), ByteBuffer.wrap(payload));
+                socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                        TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+                        errorCompletion, ByteBuffer.wrap(PING), ByteBuffer.wrap(payload));
                 handleAsyncException();
             }
         }
@@ -256,9 +258,9 @@ public class Http2AsyncUpgradeHandler ex
                 super.receivePing(payload, ack);
             } else {
                 // Client originated ping. Echo it back.
-                socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                        null, SocketWrapperBase.COMPLETE_WRITE, errorCompletion,
-                        ByteBuffer.wrap(PING_ACK), ByteBuffer.wrap(payload));
+                socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                        TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+                        errorCompletion, ByteBuffer.wrap(PING_ACK), ByteBuffer.wrap(payload));
                 handleAsyncException();
             }
         }
@@ -293,9 +295,9 @@ public class Http2AsyncUpgradeHandler ex
 
         @Override
         public void endHeaders() throws IOException {
-            socketWrapper.write(BlockingMode.SEMI_BLOCK, getWriteTimeout(), TimeUnit.MILLISECONDS,
-                    null, SocketWrapperBase.COMPLETE_WRITE, applicationErrorCompletion,
-                    bufs.toArray(BYTEBUFFER_ARRAY));
+            socketWrapper.write(BlockingMode.SEMI_BLOCK, protocol.getWriteTimeout(),
+                    TimeUnit.MILLISECONDS, null, SocketWrapperBase.COMPLETE_WRITE,
+                    applicationErrorCompletion, bufs.toArray(BYTEBUFFER_ARRAY));
             handleAsyncException();
         }
 

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java?rev=1807326&r1=1807325&r2=1807326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2Protocol.java Tue Sep  5 09:43:49 2017
@@ -105,9 +105,6 @@ public class Http2Protocol implements Up
                 ? new Http2AsyncUpgradeHandler(this, adapter, coyoteRequest)
                 : new Http2UpgradeHandler(this, adapter, coyoteRequest);
 
-        result.setReadTimeout(getReadTimeout());
-        result.setKeepAliveTimeout(getKeepAliveTimeout());
-        result.setWriteTimeout(getWriteTimeout());
         result.setMaxConcurrentStreams(getMaxConcurrentStreams());
         result.setMaxConcurrentStreamExecution(getMaxConcurrentStreamExecution());
         result.setInitialWindowSize(getInitialWindowSize());

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=1807326&r1=1807325&r2=1807326&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Tue Sep  5 09:43:49 2017
@@ -96,7 +96,7 @@ class Http2UpgradeHandler extends Abstra
 
     protected final String connectionId;
 
-    private final Http2Protocol protocol;
+    protected final Http2Protocol protocol;
     private final Adapter adapter;
     protected volatile SocketWrapperBase<?> socketWrapper;
     private volatile SSLSupport sslSupport;
@@ -122,11 +122,6 @@ class Http2UpgradeHandler extends Abstra
     private HpackDecoder hpackDecoder;
     private HpackEncoder hpackEncoder;
 
-    // All timeouts in milliseconds
-    private long readTimeout = Http2Protocol.DEFAULT_READ_TIMEOUT;
-    private long keepAliveTimeout = Http2Protocol.DEFAULT_KEEP_ALIVE_TIMEOUT;
-    private long writeTimeout = Http2Protocol.DEFAULT_WRITE_TIMEOUT;
-
     private final Map<Integer,Stream> streams = new HashMap<>();
     protected final AtomicInteger activeRemoteStreamCount = new AtomicInteger(0);
     // Start at -1 so the 'add 2' logic in closeIdleStreams() works
@@ -201,8 +196,8 @@ class Http2UpgradeHandler extends Abstra
 
         Stream stream = null;
 
-        socketWrapper.setReadTimeout(getReadTimeout());
-        socketWrapper.setWriteTimeout(getWriteTimeout());
+        socketWrapper.setReadTimeout(protocol.getReadTimeout());
+        socketWrapper.setWriteTimeout(protocol.getWriteTimeout());
 
         if (webConnection != null) {
             // HTTP/2 started via HTTP upgrade.
@@ -316,7 +311,7 @@ class Http2UpgradeHandler extends Abstra
                 try {
                     // There is data to read so use the read timeout while
                     // reading frames.
-                    socketWrapper.setReadTimeout(getReadTimeout());
+                    socketWrapper.setReadTimeout(protocol.getReadTimeout());
                     while (true) {
                         try {
                             if (!parser.readFrame(false)) {
@@ -335,7 +330,7 @@ class Http2UpgradeHandler extends Abstra
                     }
                     // No more frames to read so switch to the keep-alive
                     // timeout.
-                    socketWrapper.setReadTimeout(getKeepAliveTimeout());
+                    socketWrapper.setReadTimeout(protocol.getKeepAliveTimeout());
                 } catch (Http2Exception ce) {
                     // Really ConnectionException
                     if (log.isDebugEnabled()) {
@@ -1130,36 +1125,6 @@ class Http2UpgradeHandler extends Abstra
 
     // ------------------------------------------- Configuration getters/setters
 
-    public long getReadTimeout() {
-        return readTimeout;
-    }
-
-
-    public void setReadTimeout(long readTimeout) {
-        this.readTimeout = readTimeout;
-    }
-
-
-    public long getKeepAliveTimeout() {
-        return keepAliveTimeout;
-    }
-
-
-    public void setKeepAliveTimeout(long keepAliveTimeout) {
-        this.keepAliveTimeout = keepAliveTimeout;
-    }
-
-
-    public long getWriteTimeout() {
-        return writeTimeout;
-    }
-
-
-    public void setWriteTimeout(long writeTimeout) {
-        this.writeTimeout = writeTimeout;
-    }
-
-
     public void setMaxConcurrentStreams(long maxConcurrentStreams) {
         localSettings.set(Setting.MAX_CONCURRENT_STREAMS, maxConcurrentStreams);
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org