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 2011/07/08 17:10:01 UTC

svn commit: r1144354 - in /tomcat/trunk/java/org/apache/coyote/http11: Http11AprProtocol.java Http11NioProtocol.java Http11Protocol.java

Author: markt
Date: Fri Jul  8 15:10:01 2011
New Revision: 1144354

URL: http://svn.apache.org/viewvc?rev=1144354&view=rev
Log:
More protocol alignment (with an eye to aligning with AJP)

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=1144354&r1=1144353&r2=1144354&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Fri Jul  8 15:10:01 2011
@@ -210,7 +210,27 @@ public class Http11AprProtocol extends A
         public void recycle() {
             recycledProcessors.clear();
         }
-        
+
+        /**
+         * Expected to be used by the handler once the processor is no longer
+         * required.
+         * 
+         * @param socket
+         * @param processor
+         * @param isSocketClosing   Not used in HTTP
+         * @param addToPoller
+         */
+        public void release(SocketWrapper<Long> socket,
+                Http11AprProcessor processor, boolean isSocketClosing,
+                boolean addToPoller) {
+            processor.recycle();
+            recycledProcessors.offer(processor);
+            if (addToPoller) {
+                ((AprEndpoint)proto.endpoint).getPoller().add(
+                        socket.getSocket().longValue());
+            }
+        }
+
         @Override
         public SocketState process(SocketWrapper<Long> socket,
                 SocketStatus status) {
@@ -257,14 +277,10 @@ public class Http11AprProtocol extends A
                 } else if (state == SocketState.OPEN){
                     // In keep-alive but between requests. OK to recycle
                     // processor. Continue to poll for the next request.
-                    processor.recycle();
-                    recycledProcessors.offer(processor);
-                    ((AprEndpoint)proto.endpoint).getPoller().add(
-                            socket.getSocket().longValue());
+                    release(socket, processor, false, true);
                 } else {
                     // Connection closed. OK to recycle the processor.
-                    processor.recycle();
-                    recycledProcessors.offer(processor);
+                    release(socket, processor, true, false);
                 }
                 return state;
             } catch (java.net.SocketException e) {
@@ -287,11 +303,11 @@ public class Http11AprProtocol extends A
                 Http11AprProtocol.log.error(
                         sm.getString("http11protocol.proto.error"), e);
             }
-            processor.recycle();
-            recycledProcessors.offer(processor);
+            release(socket, processor, true, false);
             return SocketState.CLOSED;
         }
 
+        @SuppressWarnings("unused")
         private void initSsl(SocketWrapper<Long> socket,
                 Http11AprProcessor processor) {
             // NOOP for APR

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?rev=1144354&r1=1144353&r2=1144354&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Fri Jul  8 15:10:01 2011
@@ -187,6 +187,10 @@ public class Http11NioProtocol extends A
             recycledProcessors.clear();
         }
         
+        /**
+         * Expected to be used by the Poller to release resources on socket
+         * close, errors etc.
+         */
         @Override
         public void release(SocketChannel socket) {
             if (log.isDebugEnabled()) 
@@ -209,8 +213,8 @@ public class Http11NioProtocol extends A
         }
         
         /**
-         * Use this only if the processor is not available, otherwise use
-         * {@link #release(SocketWrapper, Http11NioProcessor)}.
+         * Expected to be used by the Poller to release resources on socket
+         * close, errors etc.
          */
         @Override
         public void release(SocketWrapper<NioChannel> socket) {
@@ -222,11 +226,23 @@ public class Http11NioProtocol extends A
         }
 
 
+        /**
+         * Expected to be used by the handler once the processor is no longer
+         * required.
+         * 
+         * @param socket
+         * @param processor
+         * @param isSocketClosing   Not used in HTTP
+         * @param addToPoller
+         */
         public void release(SocketWrapper<NioChannel> socket,
-                Http11NioProcessor processor) {
-            connections.remove(socket);
+                Http11NioProcessor processor, boolean isSocketClosing,
+                boolean addToPoller) {
             processor.recycle();
             recycledProcessors.offer(processor);
+            if (addToPoller) {
+                socket.getSocket().getPoller().add(socket.getSocket());
+            }
         }
 
 
@@ -283,11 +299,10 @@ public class Http11NioProtocol extends A
                 } else if (state == SocketState.OPEN){
                     // In keep-alive but between requests. OK to recycle
                     // processor. Continue to poll for the next request.
-                    release(socket, processor);
-                    socket.getSocket().getPoller().add(socket.getSocket());
+                    release(socket, processor, false, true);
                 } else {
                     // Connection closed. OK to recycle the processor.
-                    release(socket, processor);
+                    release(socket, processor, true, false);
                 }
                 return state;
             } catch (java.net.SocketException e) {
@@ -309,7 +324,7 @@ public class Http11NioProtocol extends A
                 // less-than-verbose logs.
                 log.error(sm.getString("http11protocol.proto.error"), e);
             }
-            release(socket, processor);
+            release(socket, processor, true, false);
             return SocketState.CLOSED;
         }
 

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java?rev=1144354&r1=1144353&r2=1144354&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java Fri Jul  8 15:10:01 2011
@@ -135,6 +135,22 @@ public class Http11Protocol extends Abst
             recycledProcessors.clear();
         }
 
+        /**
+         * Expected to be used by the handler once the processor is no longer
+         * required.
+         * 
+         * @param socket            Not used in BIO
+         * @param processor
+         * @param isSocketClosing   Not used in HTTP
+         * @param addToPoller       Not used in BIO
+         */
+        public void release(SocketWrapper<Socket> socket,
+                Http11Processor processor, boolean isSocketClosing,
+                boolean addToPoller) {
+            processor.recycle();
+            recycledProcessors.offer(processor);
+        }
+
         @Override
         public SocketState process(SocketWrapper<Socket> socket,
                 SocketStatus status) {
@@ -174,12 +190,10 @@ public class Http11Protocol extends Abst
                 } else if (state == SocketState.OPEN){
                     // In keep-alive but between requests. OK to recycle
                     // processor. Continue to poll for the next request.
-                    processor.recycle();
-                    recycledProcessors.offer(processor);
+                    release(socket, processor, false, true);
                 } else {
                     // Connection closed. OK to recycle the processor.
-                    processor.recycle();
-                    recycledProcessors.offer(processor);
+                    release(socket, processor, true, false);
                 }
                 return state;
             } catch(java.net.SocketException e) {
@@ -201,8 +215,7 @@ public class Http11Protocol extends Abst
                 // less-than-verbose logs.
                 log.error(sm.getString("http11protocol.proto.error"), e);
             }
-            processor.recycle();
-            recycledProcessors.offer(processor);
+            release(socket, processor, true, false);
             return SocketState.CLOSED;
         }
         



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