* required.
*/
public void release(SocketWrapper<Long> socket,
- AjpAprProcessor processor, boolean isSocketClosing) {
+ AjpAprProcessor processor, boolean isSocketClosing,
+ boolean addToPoller) {
processor.recycle(isSocketClosing);
recycledProcessors.offer(processor);
+ if (addToPoller) {
+ ((AprEndpoint)proto.endpoint).getPoller().add(
+ socket.getSocket().longValue());
+ }
}
} 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);
- ((AprEndpoint)proto.endpoint).getPoller().add(
- socket.getSocket().longValue());
+ release(socket, processor, false, true);
} else {
// Connection closed. OK to recycle the processor.
- release(socket, processor, true);
+ release(socket, processor, true, false);
}
return state;
} catch(java.net.SocketException e) {
// less-than-verbose logs.
log.error(sm.getString("ajpprotocol.proto.error"), e);
}
- release(socket, processor, true);
+ release(socket, processor, true, false);
return SocketState.CLOSED;
}
}
}
-
/**
* Expected to be used by the handler once the processor is no longer
* required.
*/
public void release(SocketWrapper<NioChannel> socket,
- AjpNioProcessor processor, boolean isSocketClosing) {
+ AjpNioProcessor processor, boolean isSocketClosing,
+ boolean addToPoller) {
processor.recycle(isSocketClosing);
recycledProcessors.offer(processor);
+ if (addToPoller) {
+ socket.getSocket().getPoller().add(socket.getSocket());
+ }
}
+
@Override
public SocketState process(SocketWrapper<NioChannel> socket,
SocketStatus status) {
} 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);
- socket.getSocket().getPoller().add(socket.getSocket());
+ release(socket, processor, false, true);
} else {
// Connection closed. OK to recycle the processor.
- release(socket, processor, true);
+ release(socket, processor, true, false);
}
return state;
} catch(java.net.SocketException e) {
// less-than-verbose logs.
log.error(sm.getString("ajpprotocol.proto.error"), e);
}
- release(socket, processor, true);
+ release(socket, processor, true, false);
return SocketState.CLOSED;
}
/**
* Expected to be used by the handler once the processor is no longer
* required.
+ *
+ * @param socket Ignored for BIO
+ * @param processor
+ * @param isSocketClosing
+ * @param addToPoller Ignored for BIO
*/
public void release(SocketWrapper<Socket> socket,
- AjpProcessor processor, boolean isSocketClosing) {
+ AjpProcessor processor, boolean isSocketClosing,
+ boolean addToPoller) {
processor.recycle(isSocketClosing);
recycledProcessors.offer(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);
+ release(socket, processor, false, true);
} else {
// Connection closed. OK to recycle the processor.
- release(socket, processor, true);
+ release(socket, processor, true, false);
}
return state;
} catch(java.net.SocketException e) {
// less-than-verbose logs.
log.error(sm.getString("ajpprotocol.proto.error"), e);
}
- release(socket, processor, true);
+ release(socket, processor, true, false);
return SocketState.CLOSED;
}