Author: markt
Date: Fri Jul 8 17:19:38 2011
New Revision: 1144391
URL: http://svn.apache.org/viewvc?rev=1144391&view=rev
Log:
Pull up Handler.process for the Http11 connectors.
Note that this is an intermediate step. The aim is to pull this up to
AbstractProtocol
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Fri
Jul 8 17:19:38 2011
@@ -47,9 +47,10 @@ import org.apache.tomcat.util.http.MimeH
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState;
import org.apache.tomcat.util.net.SocketStatus;
+import org.apache.tomcat.util.net.SocketWrapper;
import org.apache.tomcat.util.res.StringManager;
-public abstract class AbstractHttp11Processor extends AbstractProcessor {
+public abstract class AbstractHttp11Processor<S> extends AbstractProcessor {
protected abstract Log getLog();
@@ -1211,6 +1212,9 @@ public abstract class AbstractHttp11Proc
}
+ public abstract SocketState process(SocketWrapper<S> socket)
+ throws IOException;
+
public SocketState asyncDispatch(SocketStatus status) {
RequestInfo rp = request.getRequestProcessor();
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Fri
Jul 8 17:19:38 2011
@@ -16,7 +16,12 @@
*/
package org.apache.coyote.http11;
+import java.util.concurrent.ConcurrentHashMap;
+
import org.apache.coyote.AbstractProtocol;
+import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.net.SocketStatus;
+import org.apache.tomcat.util.net.SocketWrapper;
import org.apache.tomcat.util.res.StringManager;
public abstract class AbstractHttp11Protocol extends AbstractProtocol {
@@ -182,4 +187,94 @@ public abstract class AbstractHttp11Prot
public void setMaxKeepAliveRequests(int mkar) {
endpoint.setMaxKeepAliveRequests(mkar);
}
+
+
+ protected abstract static class AbstractHttp11ConnectionHandler<S,P
extends AbstractHttp11Processor<S>>
+ extends AbstractConnectionHandler {
+
+ protected ConcurrentHashMap<SocketWrapper<S>,P> connections =
+ new ConcurrentHashMap<SocketWrapper<S>,P>();
+
+ protected RecycledProcessors<P> recycledProcessors =
+ new RecycledProcessors<P>(this);
+
+ @Override
+ public void recycle() {
+ recycledProcessors.clear();
+ }
+
+ public SocketState process(SocketWrapper<S> socket,
+ SocketStatus status) {
+ P processor = connections.remove(socket);
+
+ socket.setAsync(false); //no longer check for timeout
+
+ try {
+ if (processor == null) {
+ processor = recycledProcessors.poll();
+ }
+ if (processor == null) {
+ processor = createProcessor();
+ }
+
+ initSsl(socket, processor);
+
+ SocketState state = SocketState.CLOSED;
+ do {
+ if (processor.isAsync() || state == SocketState.ASYNC_END)
{
+ state = processor.asyncDispatch(status);
+ } else if (processor.comet) {
+ state = processor.event(status);
+ } else {
+ state = processor.process(socket);
+ }
+
+ if (state != SocketState.CLOSED && processor.isAsync()) {
+ state = processor.asyncPostProcess();
+ }
+ } while (state == SocketState.ASYNC_END);
+
+ if (state == SocketState.LONG) {
+ // In the middle of processing a request/response. Keep the
+ // socket associated with the processor. Exact requirements
+ // depend on type of long poll
+ longPoll(socket, processor);
+ } 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, false, true);
+ } else {
+ // Connection closed. OK to recycle the processor.
+ release(socket, processor, true, false);
+ }
+ return state;
+ } catch(java.net.SocketException e) {
+ // SocketExceptions are normal
+ getLog().debug(sm.getString(
+ "http11protocol.proto.socketexception.debug"), e);
+ } catch (java.io.IOException e) {
+ // IOExceptions are normal
+ getLog().debug(sm.getString(
+ "http11protocol.proto.ioexception.debug"), e);
+ }
+ // Future developers: if you discover any other
+ // rare-but-nonfatal exceptions, catch them here, and log as
+ // above.
+ catch (Throwable e) {
+ ExceptionUtils.handleThrowable(e);
+ // any other exception or error is odd. Here we log it
+ // with "ERROR" level, so it will show up even on
+ // less-than-verbose logs.
+ getLog().error(sm.getString("http11protocol.proto.error"), e);
+ }
+ release(socket, processor, true, false);
+ return SocketState.CLOSED;
+ }
+
+ protected abstract P createProcessor();
+ protected abstract void initSsl(SocketWrapper<S> socket, P processor);
+ protected abstract void longPoll(SocketWrapper<S> socket, P processor);
+ protected abstract void release(SocketWrapper<S> socket, P processor,
+ boolean socketClosing, boolean addToPoller);
+ }
}
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Fri Jul
8 17:19:38 2011
@@ -45,7 +45,7 @@ import org.apache.tomcat.util.net.Socket
*
* @author Remy Maucherat
*/
-public class Http11AprProcessor extends AbstractHttp11Processor {
+public class Http11AprProcessor extends AbstractHttp11Processor<Long> {
private static final Log log = LogFactory.getLog(Http11AprProcessor.class);
@@ -163,6 +163,7 @@ public class Http11AprProcessor extends
*
* @throws IOException error during an I/O operation
*/
+ @Override
public SocketState process(SocketWrapper<Long> socket)
throws IOException {
RequestInfo rp = request.getRequestProcessor();
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=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Fri Jul
8 17:19:38 2011
@@ -14,19 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.coyote.http11;
-import java.util.concurrent.ConcurrentHashMap;
-
import org.apache.coyote.AbstractProtocol;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.AprEndpoint;
import org.apache.tomcat.util.net.AprEndpoint.Handler;
-import org.apache.tomcat.util.net.SocketStatus;
import org.apache.tomcat.util.net.SocketWrapper;
@@ -182,16 +177,10 @@ public class Http11AprProtocol extends A
// -------------------- Connection handler --------------------
protected static class Http11ConnectionHandler
- extends AbstractConnectionHandler implements Handler {
+ extends AbstractHttp11ConnectionHandler<Long,Http11AprProcessor>
implements Handler {
protected Http11AprProtocol proto;
- protected ConcurrentHashMap<Long, Http11AprProcessor> connections =
- new ConcurrentHashMap<Long, Http11AprProcessor>();
-
- protected RecycledProcessors<Http11AprProcessor> recycledProcessors =
- new RecycledProcessors<Http11AprProcessor>(this);
-
Http11ConnectionHandler(Http11AprProtocol proto) {
this.proto = proto;
}
@@ -220,6 +209,7 @@ public class Http11AprProtocol extends A
* @param isSocketClosing Not used in HTTP
* @param addToPoller
*/
+ @Override
public void release(SocketWrapper<Long> socket,
Http11AprProcessor processor, boolean isSocketClosing,
boolean addToPoller) {
@@ -232,83 +222,15 @@ public class Http11AprProtocol extends A
}
@Override
- public SocketState process(SocketWrapper<Long> socket,
- SocketStatus status) {
- Http11AprProcessor processor =
connections.remove(socket.getSocket());
-
- socket.setAsync(false);
-
- try {
- if (processor == null) {
- processor = recycledProcessors.poll();
- }
- if (processor == null) {
- processor = createProcessor();
- }
-
- initSsl(socket, processor);
-
- SocketState state = SocketState.CLOSED;
- do {
- if (processor.isAsync() || state == SocketState.ASYNC_END)
{
- state = processor.asyncDispatch(status);
- } else if (processor.comet) {
- state = processor.event(status);
- } else {
- state = processor.process(socket);
- }
-
- if (state != SocketState.CLOSED && processor.isAsync()) {
- state = processor.asyncPostProcess();
- }
- } while (state == SocketState.ASYNC_END);
-
- if (state == SocketState.LONG) {
- // In the middle of processing a request/response. Keep the
- // socket associated with the processor. Exact requirements
- // depend on type of long poll
- longPoll(socket, processor);
- } 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, false, true);
- } else {
- // Connection closed. OK to recycle the processor.
- release(socket, processor, true, false);
- }
- return state;
- } catch (java.net.SocketException e) {
- // SocketExceptions are normal
- log.debug(sm.getString(
- "http11protocol.proto.socketexception.debug"), e);
- } catch (java.io.IOException e) {
- // IOExceptions are normal
- log.debug(sm.getString(
- "http11protocol.proto.ioexception.debug"), e);
- }
- // Future developers: if you discover any other
- // rare-but-nonfatal exceptions, catch them here, and log as
- // above.
- catch (Throwable e) {
- ExceptionUtils.handleThrowable(e);
- // any other exception or error is odd. Here we log it
- // with "ERROR" level, so it will show up even on
- // less-than-verbose logs.
- log.error(sm.getString("http11protocol.proto.error"), e);
- }
- release(socket, processor, true, false);
- return SocketState.CLOSED;
- }
-
- @SuppressWarnings("unused")
- private void initSsl(SocketWrapper<Long> socket,
+ protected void initSsl(SocketWrapper<Long> socket,
Http11AprProcessor processor) {
// NOOP for APR
}
- private void longPoll(SocketWrapper<Long> socket,
+ @Override
+ protected void longPoll(SocketWrapper<Long> socket,
Http11AprProcessor processor) {
- connections.put(socket.getSocket(), processor);
+ connections.put(socket, processor);
if (processor.isAsync()) {
socket.setAsync(true);
@@ -318,6 +240,7 @@ public class Http11AprProtocol extends A
}
}
+ @Override
protected Http11AprProcessor createProcessor() {
Http11AprProcessor processor = new Http11AprProcessor(
proto.getMaxHttpHeaderSize(), (AprEndpoint)proto.endpoint,
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Fri Jul
8 17:19:38 2011
@@ -45,7 +45,7 @@ import org.apache.tomcat.util.net.Socket
* @author Remy Maucherat
* @author Filip Hanik
*/
-public class Http11NioProcessor extends AbstractHttp11Processor {
+public class Http11NioProcessor extends AbstractHttp11Processor<NioChannel> {
private static final Log log = LogFactory.getLog(Http11NioProcessor.class);
@Override
@@ -194,6 +194,7 @@ public class Http11NioProcessor extends
*
* @throws IOException error during an I/O operation
*/
+ @Override
public SocketState process(SocketWrapper<NioChannel> socket)
throws IOException {
RequestInfo rp = request.getRequestProcessor();
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=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Fri Jul
8 17:19:38 2011
@@ -14,18 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.coyote.http11;
import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
-import java.util.concurrent.ConcurrentHashMap;
import org.apache.coyote.AbstractProtocol;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.NioChannel;
import org.apache.tomcat.util.net.NioEndpoint;
@@ -33,7 +30,6 @@ import org.apache.tomcat.util.net.NioEnd
import org.apache.tomcat.util.net.NioEndpoint.KeyAttachment;
import org.apache.tomcat.util.net.SSLImplementation;
import org.apache.tomcat.util.net.SecureNioChannel;
-import org.apache.tomcat.util.net.SocketStatus;
import org.apache.tomcat.util.net.SocketWrapper;
@@ -152,16 +148,11 @@ public class Http11NioProtocol extends A
// -------------------- Connection handler --------------------
protected static class Http11ConnectionHandler
- extends AbstractConnectionHandler implements Handler {
+ extends
AbstractHttp11ConnectionHandler<NioChannel,Http11NioProcessor>
+ implements Handler {
protected Http11NioProtocol proto;
- protected ConcurrentHashMap<SocketWrapper<NioChannel>,
Http11NioProcessor> connections =
- new ConcurrentHashMap<SocketWrapper<NioChannel>,
Http11NioProcessor>();
-
- protected RecycledProcessors<Http11NioProcessor> recycledProcessors =
- new RecycledProcessors<Http11NioProcessor>(this);
-
Http11ConnectionHandler(Http11NioProtocol proto) {
this.proto = proto;
}
@@ -182,11 +173,6 @@ public class Http11NioProtocol extends A
return proto.sslImplementation;
}
- @Override
- public void recycle() {
- recycledProcessors.clear();
- }
-
/**
* Expected to be used by the Poller to release resources on socket
* close, errors etc.
@@ -235,6 +221,7 @@ public class Http11NioProtocol extends A
* @param isSocketClosing Not used in HTTP
* @param addToPoller
*/
+ @Override
public void release(SocketWrapper<NioChannel> socket,
Http11NioProcessor processor, boolean isSocketClosing,
boolean addToPoller) {
@@ -247,75 +234,7 @@ public class Http11NioProtocol extends A
@Override
- public SocketState process(SocketWrapper<NioChannel> socket,
- SocketStatus status) {
- Http11NioProcessor processor = connections.remove(socket);
-
- socket.setAsync(false); //no longer check for timeout
-
- try {
- if (processor == null) {
- processor = recycledProcessors.poll();
- }
- if (processor == null) {
- processor = createProcessor();
- }
-
- initSsl(socket, processor);
-
- SocketState state = SocketState.CLOSED;
- do {
- if (processor.isAsync() || state == SocketState.ASYNC_END)
{
- state = processor.asyncDispatch(status);
- } else if (processor.comet) {
- state = processor.event(status);
- } else {
- state = processor.process(socket);
- }
-
- if (state != SocketState.CLOSED && processor.isAsync()) {
- state = processor.asyncPostProcess();
- }
- } while (state == SocketState.ASYNC_END);
-
- if (state == SocketState.LONG) {
- // In the middle of processing a request/response. Keep the
- // socket associated with the processor. Exact requirements
- // depend on type of long poll
- longPoll(socket, processor);
- } 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, false, true);
- } else {
- // Connection closed. OK to recycle the processor.
- release(socket, processor, true, false);
- }
- return state;
- } catch (java.net.SocketException e) {
- // SocketExceptions are normal
- log.debug(sm.getString(
- "http11protocol.proto.socketexception.debug"), e);
- } catch (java.io.IOException e) {
- // IOExceptions are normal
- log.debug(sm.getString(
- "http11protocol.proto.ioexception.debug"), e);
- }
- // Future developers: if you discover any other
- // rare-but-nonfatal exceptions, catch them here, and log as
- // above.
- catch (Throwable e) {
- ExceptionUtils.handleThrowable(e);
- // any other exception or error is odd. Here we log it
- // with "ERROR" level, so it will show up even on
- // less-than-verbose logs.
- log.error(sm.getString("http11protocol.proto.error"), e);
- }
- release(socket, processor, true, false);
- return SocketState.CLOSED;
- }
-
- private void initSsl(SocketWrapper<NioChannel> socket,
+ protected void initSsl(SocketWrapper<NioChannel> socket,
Http11NioProcessor processor) {
if (proto.isSSLEnabled() &&
(proto.sslImplementation != null)
@@ -330,7 +249,8 @@ public class Http11NioProtocol extends A
}
- private void longPoll(SocketWrapper<NioChannel> socket,
+ @Override
+ protected void longPoll(SocketWrapper<NioChannel> socket,
Http11NioProcessor processor) {
connections.put(socket, processor);
@@ -349,6 +269,7 @@ public class Http11NioProtocol extends A
}
}
+ @Override
public Http11NioProcessor createProcessor() {
Http11NioProcessor processor = new Http11NioProcessor(
proto.getMaxHttpHeaderSize(), (NioEndpoint)proto.endpoint,
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Fri Jul 8
17:19:38 2011
@@ -41,7 +41,7 @@ import org.apache.tomcat.util.net.Socket
* @author Remy Maucherat
* @author fhanik
*/
-public class Http11Processor extends AbstractHttp11Processor {
+public class Http11Processor extends AbstractHttp11Processor<Socket> {
private static final Log log = LogFactory.getLog(Http11Processor.class);
@Override
@@ -129,6 +129,7 @@ public class Http11Processor extends Abs
*
* @throws IOException error during an I/O operation
*/
+ @Override
public SocketState process(SocketWrapper<Socket> socketWrapper)
throws IOException {
RequestInfo rp = request.getRequestProcessor();
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=1144391&r1=1144390&r2=1144391&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java Fri Jul 8
17:19:38 2011
@@ -14,20 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.coyote.http11;
import java.net.Socket;
-import java.util.concurrent.ConcurrentHashMap;
import org.apache.coyote.AbstractProtocol;
import org.apache.juli.logging.Log;
-import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.JIoEndpoint;
import org.apache.tomcat.util.net.JIoEndpoint.Handler;
import org.apache.tomcat.util.net.SSLImplementation;
-import org.apache.tomcat.util.net.SocketStatus;
import org.apache.tomcat.util.net.SocketWrapper;
@@ -101,16 +97,10 @@ public class Http11Protocol extends Abst
// ----------------------------------- Http11ConnectionHandler Inner Class
protected static class Http11ConnectionHandler
- extends AbstractConnectionHandler implements Handler {
+ extends AbstractHttp11ConnectionHandler<Socket, Http11Processor>
implements Handler {
protected Http11Protocol proto;
- protected ConcurrentHashMap<SocketWrapper<Socket>, Http11Processor>
connections =
- new ConcurrentHashMap<SocketWrapper<Socket>, Http11Processor>();
-
- protected RecycledProcessors<Http11Processor> recycledProcessors =
- new RecycledProcessors<Http11Processor>(this);
-
Http11ConnectionHandler(Http11Protocol proto) {
this.proto = proto;
}
@@ -130,11 +120,6 @@ public class Http11Protocol extends Abst
return proto.sslImplementation;
}
- @Override
- public void recycle() {
- recycledProcessors.clear();
- }
-
/**
* Expected to be used by the handler once the processor is no longer
* required.
@@ -144,6 +129,7 @@ public class Http11Protocol extends Abst
* @param isSocketClosing Not used in HTTP
* @param addToPoller Not used in BIO
*/
+ @Override
public void release(SocketWrapper<Socket> socket,
Http11Processor processor, boolean isSocketClosing,
boolean addToPoller) {
@@ -152,75 +138,7 @@ public class Http11Protocol extends Abst
}
@Override
- public SocketState process(SocketWrapper<Socket> socket,
- SocketStatus status) {
- Http11Processor processor = connections.remove(socket);
-
- socket.setAsync(false); //no longer check for timeout
-
- try {
- if (processor == null) {
- processor = recycledProcessors.poll();
- }
- if (processor == null) {
- processor = createProcessor();
- }
-
- initSsl(socket, processor);
-
- SocketState state = SocketState.CLOSED;
- do {
- if (processor.isAsync() || state == SocketState.ASYNC_END)
{
- state = processor.asyncDispatch(status);
- } else if (processor.comet) {
- state = processor.event(status);
- } else {
- state = processor.process(socket);
- }
-
- if (state != SocketState.CLOSED && processor.isAsync()) {
- state = processor.asyncPostProcess();
- }
- } while (state == SocketState.ASYNC_END);
-
- if (state == SocketState.LONG) {
- // In the middle of processing a request/response. Keep the
- // socket associated with the processor. Exact requirements
- // depend on type of long poll
- longPoll(socket, processor);
- } 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, false, true);
- } else {
- // Connection closed. OK to recycle the processor.
- release(socket, processor, true, false);
- }
- return state;
- } catch(java.net.SocketException e) {
- // SocketExceptions are normal
- log.debug(sm.getString(
- "http11protocol.proto.socketexception.debug"), e);
- } catch (java.io.IOException e) {
- // IOExceptions are normal
- log.debug(sm.getString(
- "http11protocol.proto.ioexception.debug"), e);
- }
- // Future developers: if you discover any other
- // rare-but-nonfatal exceptions, catch them here, and log as
- // above.
- catch (Throwable e) {
- ExceptionUtils.handleThrowable(e);
- // any other exception or error is odd. Here we log it
- // with "ERROR" level, so it will show up even on
- // less-than-verbose logs.
- log.error(sm.getString("http11protocol.proto.error"), e);
- }
- release(socket, processor, true, false);
- return SocketState.CLOSED;
- }
-
- private void initSsl(SocketWrapper<Socket> socket,
+ protected void initSsl(SocketWrapper<Socket> socket,
Http11Processor processor) {
if (proto.isSSLEnabled() && (proto.sslImplementation != null)) {
processor.setSSLSupport(
@@ -232,11 +150,13 @@ public class Http11Protocol extends Abst
}
- private void longPoll(SocketWrapper<Socket> socket,
+ @Override
+ protected void longPoll(SocketWrapper<Socket> socket,
Http11Processor processor) {
connections.put(socket, processor);
}
+ @Override
protected Http11Processor createProcessor() {
Http11Processor processor = new Http11Processor(
proto.getMaxHttpHeaderSize(), (JIoEndpoint)proto.endpoint,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]