Author: markt
Date: Wed Jun 22 23:29:51 2011
New Revision: 1138681
URL: http://svn.apache.org/viewvc?rev=1138681&view=rev
Log:
Connector refactoring
Another small step towards SocketWrapper for NIO
Modified:
tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java?rev=1138681&r1=1138680&r2=1138681&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java Wed Jun 22
23:29:51 2011
@@ -94,8 +94,8 @@ public class AjpNioProtocol extends Abst
protected AjpNioProtocol proto;
- protected ConcurrentHashMap<NioChannel, AjpNioProcessor> connections =
- new ConcurrentHashMap<NioChannel, AjpNioProcessor>();
+ protected ConcurrentHashMap<SocketWrapper<NioChannel>,
AjpNioProcessor> connections =
+ new ConcurrentHashMap<SocketWrapper<NioChannel>,
AjpNioProcessor>();
protected RecycledProcessors<AjpNioProcessor> recycledProcessors =
new RecycledProcessors<AjpNioProcessor>(this);
@@ -130,10 +130,10 @@ public class AjpNioProtocol extends Abst
if (log.isDebugEnabled())
log.debug("Iterating through our connections to release a
socket channel:"+socket);
boolean released = false;
- Iterator<java.util.Map.Entry<NioChannel, AjpNioProcessor>> it =
connections.entrySet().iterator();
+ Iterator<java.util.Map.Entry<SocketWrapper<NioChannel>,
AjpNioProcessor>> it = connections.entrySet().iterator();
while (it.hasNext()) {
- java.util.Map.Entry<NioChannel, AjpNioProcessor> entry =
it.next();
- if (entry.getKey().getIOChannel()==socket) {
+ java.util.Map.Entry<SocketWrapper<NioChannel>,
AjpNioProcessor> entry = it.next();
+ if (entry.getKey().getSocket().getIOChannel()==socket) {
it.remove();
AjpNioProcessor result = entry.getValue();
result.recycle();
@@ -151,7 +151,7 @@ public class AjpNioProtocol extends Abst
* {@link #release(NioChannel, AjpNioProcessor)}.
*/
@Override
- public void release(NioChannel socket) {
+ public void release(SocketWrapper<NioChannel> socket) {
AjpNioProcessor processor = connections.remove(socket);
if (processor != null) {
processor.recycle();
@@ -160,7 +160,8 @@ public class AjpNioProtocol extends Abst
}
- public void release(NioChannel socket, AjpNioProcessor processor) {
+ public void release(SocketWrapper<NioChannel> socket,
+ AjpNioProcessor processor) {
connections.remove(socket);
processor.recycle();
recycledProcessors.offer(processor);
@@ -170,7 +171,7 @@ public class AjpNioProtocol extends Abst
public SocketState process(SocketWrapper<NioChannel> socketWrapper,
SocketStatus status) {
NioChannel socket = socketWrapper.getSocket();
- AjpNioProcessor processor = connections.remove(socket);
+ AjpNioProcessor processor = connections.remove(socketWrapper);
socketWrapper.setAsync(false); //no longer check for timeout
@@ -198,17 +199,17 @@ public class AjpNioProtocol extends Abst
if (state == SocketState.LONG) {
// In the middle of processing a request/response. Keep the
// socket associated with the processor.
- connections.put(socket, processor);
+ connections.put(socketWrapper, processor);
socketWrapper.setAsync(true);
} 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);
+ release(socketWrapper, processor);
socket.getPoller().add(socket);
} else {
// Connection closed. OK to recycle the processor.
- release(socket, processor);
+ release(socketWrapper, processor);
}
return state;
@@ -231,7 +232,7 @@ public class AjpNioProtocol extends Abst
// less-than-verbose logs.
log.error(sm.getString("ajpprotocol.proto.error"), e);
}
- release(socket, processor);
+ release(socketWrapper, processor);
return SocketState.CLOSED;
}
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=1138681&r1=1138680&r2=1138681&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Wed Jun
22 23:29:51 2011
@@ -156,8 +156,8 @@ public class Http11NioProtocol extends A
protected Http11NioProtocol proto;
- protected ConcurrentHashMap<NioChannel, Http11NioProcessor>
connections =
- new ConcurrentHashMap<NioChannel, Http11NioProcessor>();
+ protected ConcurrentHashMap<SocketWrapper<NioChannel>,
Http11NioProcessor> connections =
+ new ConcurrentHashMap<SocketWrapper<NioChannel>,
Http11NioProcessor>();
protected RecycledProcessors<Http11NioProcessor> recycledProcessors =
new RecycledProcessors<Http11NioProcessor>(this);
@@ -192,10 +192,10 @@ public class Http11NioProtocol extends A
if (log.isDebugEnabled())
log.debug("Iterating through our connections to release a
socket channel:"+socket);
boolean released = false;
- Iterator<java.util.Map.Entry<NioChannel, Http11NioProcessor>> it =
connections.entrySet().iterator();
+ Iterator<java.util.Map.Entry<SocketWrapper<NioChannel>,
Http11NioProcessor>> it = connections.entrySet().iterator();
while (it.hasNext()) {
- java.util.Map.Entry<NioChannel, Http11NioProcessor> entry =
it.next();
- if (entry.getKey().getIOChannel()==socket) {
+ java.util.Map.Entry<SocketWrapper<NioChannel>,
Http11NioProcessor> entry = it.next();
+ if (entry.getKey().getSocket().getIOChannel()==socket) {
it.remove();
Http11NioProcessor result = entry.getValue();
result.recycle();
@@ -213,7 +213,7 @@ public class Http11NioProtocol extends A
* {@link #release(NioChannel, Http11NioProcessor)}.
*/
@Override
- public void release(NioChannel socket) {
+ public void release(SocketWrapper<NioChannel> socket) {
Http11NioProcessor processor = connections.remove(socket);
if (processor != null) {
processor.recycle();
@@ -222,7 +222,8 @@ public class Http11NioProtocol extends A
}
- public void release(NioChannel socket, Http11NioProcessor processor) {
+ public void release(SocketWrapper<NioChannel> socket,
+ Http11NioProcessor processor) {
connections.remove(socket);
processor.recycle();
recycledProcessors.offer(processor);
@@ -233,7 +234,7 @@ public class Http11NioProtocol extends A
public SocketState process(SocketWrapper<NioChannel> socketWrapper,
SocketStatus status) {
NioChannel socket = socketWrapper.getSocket();
- Http11NioProcessor processor = connections.remove(socket);
+ Http11NioProcessor processor = connections.remove(socketWrapper);
socketWrapper.setAsync(false); //no longer check for timeout
@@ -274,7 +275,7 @@ public class Http11NioProtocol extends A
if (state == SocketState.LONG) {
// In the middle of processing a request/response. Keep the
// socket associated with the processor.
- connections.put(socket, processor);
+ connections.put(socketWrapper, processor);
if (processor.isAsync()) {
socketWrapper.setAsync(true);
@@ -292,11 +293,11 @@ 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);
+ release(socketWrapper, processor);
socket.getPoller().add(socket);
} else {
// Connection closed. OK to recycle the processor.
- release(socket, processor);
+ release(socketWrapper, processor);
}
return state;
@@ -319,7 +320,7 @@ public class Http11NioProtocol extends A
// less-than-verbose logs.
log.error(sm.getString("http11protocol.proto.error"), e);
}
- release(socket, processor);
+ release(socketWrapper, processor);
return SocketState.CLOSED;
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1138681&r1=1138680&r2=1138681&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Wed Jun 22
23:29:51 2011
@@ -1019,7 +1019,7 @@ public class NioEndpoint extends Abstrac
}
}
key.attach(null);
- if (ka!=null) handler.release(ka.getChannel());
+ if (ka!=null) handler.release(ka);
else handler.release((SocketChannel)key.channel());
if (key.isValid()) key.cancel();
if (key.channel().isOpen()) {
@@ -1487,7 +1487,7 @@ public class NioEndpoint extends Abstrac
public interface Handler extends AbstractEndpoint.Handler {
public SocketState process(SocketWrapper<NioChannel> socket,
SocketStatus status);
- public void release(NioChannel socket);
+ public void release(SocketWrapper<NioChannel> socket);
public void release(SocketChannel socket);
public SSLImplementation getSslImplementation();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]