Author: remm
Date: Thu May  3 14:43:36 2018
New Revision: 1830827

URL: http://svn.apache.org/viewvc?rev=1830827&view=rev
Log:
Refactoring to move common helper class to SocketWrapperBase. Also saves one 
object creation.

Modified:
    tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java
    tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
    
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.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=1830827&r1=1830826&r2=1830827&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2AsyncUpgradeHandler.java Thu 
May  3 14:43:36 2018
@@ -33,9 +33,6 @@ import org.apache.tomcat.util.http.MimeH
 import org.apache.tomcat.util.net.SendfileState;
 import org.apache.tomcat.util.net.SocketWrapperBase;
 import org.apache.tomcat.util.net.SocketWrapperBase.BlockingMode;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionCheck;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionHandlerCall;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionState;
 
 public class Http2AsyncUpgradeHandler extends Http2UpgradeHandler {
 
@@ -307,7 +304,7 @@ public class Http2AsyncUpgradeHandler ex
                 ByteUtil.set31Bits(header, 5, 
sendfile.stream.getIdentifier().intValue());
                 sendfile.mappedBuffer.limit(sendfile.mappedBuffer.position() + 
frameSize);
                 socketWrapper.write(BlockingMode.SEMI_BLOCK, 
protocol.getWriteTimeout(),
-                        TimeUnit.MILLISECONDS, sendfile, 
COMPLETE_WRITE_WITH_COMPLETION,
+                        TimeUnit.MILLISECONDS, sendfile, 
SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION,
                         new SendfileCompletionHandler(), 
ByteBuffer.wrap(header), sendfile.mappedBuffer);
                 try {
                     handleAsyncException();
@@ -321,19 +318,6 @@ public class Http2AsyncUpgradeHandler ex
         }
     }
 
-    private static final CompletionCheck COMPLETE_WRITE_WITH_COMPLETION = new 
CompletionCheck() {
-        @Override
-        public CompletionHandlerCall callHandler(CompletionState state, 
ByteBuffer[] buffers,
-                int offset, int length) {
-            for (int i = 0; i < length; i++) {
-                if (buffers[offset + i].remaining() > 0) {
-                    return CompletionHandlerCall.CONTINUE;
-                }
-            }
-            return CompletionHandlerCall.DONE;
-        }
-    };
-
     protected class SendfileCompletionHandler implements 
CompletionHandler<Long, SendfileData> {
         @Override
         public void completed(Long nBytes, SendfileData sendfile) {
@@ -381,7 +365,7 @@ public class Http2AsyncUpgradeHandler ex
                 ByteUtil.set31Bits(header, 5, 
sendfile.stream.getIdentifier().intValue());
                 sendfile.mappedBuffer.limit(sendfile.mappedBuffer.position() + 
frameSize);
                 socketWrapper.write(BlockingMode.SEMI_BLOCK, 
protocol.getWriteTimeout(),
-                        TimeUnit.MILLISECONDS, sendfile, 
COMPLETE_WRITE_WITH_COMPLETION,
+                        TimeUnit.MILLISECONDS, sendfile, 
SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION,
                         this, ByteBuffer.wrap(header), sendfile.mappedBuffer);
                 try {
                     handleAsyncException();

Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1830827&r1=1830826&r2=1830827&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Thu May 
 3 14:43:36 2018
@@ -868,6 +868,23 @@ public abstract class SocketWrapperBase<
     };
 
     /**
+     * This utility CompletionCheck will cause the write to fully write
+     * all remaining data. The completion handler will then be called.
+     */
+    public static final CompletionCheck COMPLETE_WRITE_WITH_COMPLETION = new 
CompletionCheck() {
+        @Override
+        public CompletionHandlerCall callHandler(CompletionState state, 
ByteBuffer[] buffers,
+                int offset, int length) {
+            for (int i = 0; i < length; i++) {
+                if (buffers[offset + i].remaining() > 0) {
+                    return CompletionHandlerCall.CONTINUE;
+                }
+            }
+            return CompletionHandlerCall.DONE;
+        }
+    };
+
+    /**
      * This utility CompletionCheck will cause the completion handler
      * to be called once some data has been read. If the operation
      * completes inline, the completion handler will not be called.

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java?rev=1830827&r1=1830826&r2=1830827&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
 (original)
+++ 
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
 Thu May  3 14:43:36 2018
@@ -32,9 +32,6 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.net.SocketWrapperBase;
 import org.apache.tomcat.util.net.SocketWrapperBase.BlockingMode;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionCheck;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionHandlerCall;
-import org.apache.tomcat.util.net.SocketWrapperBase.CompletionState;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.Transformation;
 import org.apache.tomcat.websocket.WsRemoteEndpointImplBase;
@@ -92,19 +89,7 @@ public class WsRemoteEndpointImplServer
                 timeout = getSendTimeout();
             }
             socketWrapper.write(block ? BlockingMode.BLOCK : 
BlockingMode.SEMI_BLOCK, timeout,
-                    TimeUnit.MILLISECONDS, null,
-                    new CompletionCheck() {
-                        @Override
-                        public CompletionHandlerCall 
callHandler(CompletionState state, ByteBuffer[] buffers,
-                                int offset, int length) {
-                            for (int i = 0; i < length; i++) {
-                                if (buffers[offset + i].remaining() > 0) {
-                                    return CompletionHandlerCall.CONTINUE;
-                                }
-                            }
-                            return CompletionHandlerCall.DONE;
-                        }
-                    },
+                    TimeUnit.MILLISECONDS, null, 
SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION,
                     new CompletionHandler<Long, Void>() {
                         @Override
                         public void completed(Long result, Void attachment) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to