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);
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();
* {@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();
}
- public void release(NioChannel socket, AjpNioProcessor processor) {
+ public void release(SocketWrapper<NioChannel> socket,
+ AjpNioProcessor processor) {
connections.remove(socket);
processor.recycle();
recycledProcessors.offer(processor);
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
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;
// less-than-verbose logs.
log.error(sm.getString("ajpprotocol.proto.error"), e);
}
- release(socket, processor);
+ release(socketWrapper, processor);
return SocketState.CLOSED;
}
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);
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();
* {@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();
}
- public void release(NioChannel socket, Http11NioProcessor processor) {
+ public void release(SocketWrapper<NioChannel> socket,
+ Http11NioProcessor processor) {
connections.remove(socket);
processor.recycle();
recycledProcessors.offer(processor);
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
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);
} 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;
// less-than-verbose logs.
log.error(sm.getString("http11protocol.proto.error"), e);
}
- release(socket, processor);
+ release(socketWrapper, processor);
return SocketState.CLOSED;
}
}
}
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()) {
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();
}