Author: markt
Date: Mon Dec 24 11:03:06 2012
New Revision: 1425628
URL: http://svn.apache.org/viewvc?rev=1425628&view=rev
Log:
Refactor connections as upgraded connections will need to support multiple
threads processing the same connection
Modified:
tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java
tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
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/AbstractProtocol.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java?rev=1425628&r1=1425627&r2=1425628&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AbstractProtocol.java Mon Dec 24
11:03:06 2012
@@ -581,7 +581,7 @@ public abstract class AbstractProtocol i
public SocketState process(SocketWrapper<S> socket,
SocketStatus status) {
- Processor<S> processor = connections.remove(socket.getSocket());
+ Processor<S> processor = connections.get(socket.getSocket());
if (status == SocketStatus.DISCONNECT && processor == null) {
//nothing more to be done endpoint requested a close
@@ -645,22 +645,27 @@ public abstract class AbstractProtocol i
// In the middle of processing a request/response. Keep the
// socket associated with the processor. Exact requirements
// depend on type of long poll
+ connections.put(socket.getSocket(), processor);
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.
+ connections.remove(processor);
release(socket, processor, false, true);
} else if (state == SocketState.SENDFILE) {
// Sendfile in progress. If it fails, the socket will be
// closed. If it works, the socket will be re-added to the
// poller
+ connections.remove(processor);
release(socket, processor, false, false);
} else if (state == SocketState.UPGRADED) {
// Need to keep the connection associated with the
processor
+ connections.put(socket.getSocket(), processor);
longPoll(socket, processor);
} else {
// Connection closed. OK to recycle the processor. Upgrade
// processors are not recycled.
+ connections.remove(processor);
if (!processor.isUpgrade()) {
release(socket, processor, true, false);
}
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java?rev=1425628&r1=1425627&r2=1425628&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java Mon Dec 24
11:03:06 2012
@@ -87,7 +87,6 @@ public abstract class AbstractAjpProtoco
protected void longPoll(SocketWrapper<S> socket,
Processor<S> processor) {
// Same requirements for all AJP connectors
- connections.put(socket.getSocket(), processor);
socket.setAsync(true);
}
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=1425628&r1=1425627&r2=1425628&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Mon Dec
24 11:03:06 2012
@@ -288,7 +288,6 @@ public class Http11AprProtocol extends A
@Override
protected void longPoll(SocketWrapper<Long> socket,
Processor<Long> processor) {
- connections.put(socket.getSocket(), processor);
if (processor.isAsync()) {
// Async
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=1425628&r1=1425627&r2=1425628&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Mon Dec
24 11:03:06 2012
@@ -264,7 +264,6 @@ public class Http11NioProtocol extends A
@Override
protected void longPoll(SocketWrapper<NioChannel> socket,
Processor<NioChannel> processor) {
- connections.put(socket.getSocket(), processor);
if (processor.isAsync()) {
socket.setAsync(true);
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=1425628&r1=1425627&r2=1425628&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java Mon Dec 24
11:03:06 2012
@@ -179,7 +179,7 @@ public class Http11Protocol extends Abst
@Override
protected void longPoll(SocketWrapper<Socket> socket,
Processor<Socket> processor) {
- connections.put(socket.getSocket(), processor);
+ // NO-OP
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]