public void recycle() {
recycledProcessors.clear();
}
-
+
+ /**
+ * Expected to be used by the handler once the processor is no longer
+ * required.
+ *
+ * @param socket
+ * @param processor
+ * @param isSocketClosing Not used in HTTP
+ * @param addToPoller
+ */
+ public void release(SocketWrapper<Long> socket,
+ Http11AprProcessor processor, boolean isSocketClosing,
+ boolean addToPoller) {
+ processor.recycle();
+ recycledProcessors.offer(processor);
+ if (addToPoller) {
+ ((AprEndpoint)proto.endpoint).getPoller().add(
+ socket.getSocket().longValue());
+ }
+ }
+
@Override
public SocketState process(SocketWrapper<Long> 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.
- processor.recycle();
- recycledProcessors.offer(processor);
- ((AprEndpoint)proto.endpoint).getPoller().add(
- socket.getSocket().longValue());
+ release(socket, processor, false, true);
} else {
// Connection closed. OK to recycle the processor.
- processor.recycle();
- recycledProcessors.offer(processor);
+ release(socket, processor, true, false);
}
return state;
} catch (java.net.SocketException e) {
Http11AprProtocol.log.error(
sm.getString("http11protocol.proto.error"), e);
}
- processor.recycle();
- recycledProcessors.offer(processor);
+ release(socket, processor, true, false);
return SocketState.CLOSED;
}
+ @SuppressWarnings("unused")
private void initSsl(SocketWrapper<Long> socket,
Http11AprProcessor processor) {
// NOOP for APR
recycledProcessors.clear();
}
+ /**
+ * Expected to be used by the Poller to release resources on socket
+ * close, errors etc.
+ */
@Override
public void release(SocketChannel socket) {
if (log.isDebugEnabled())
}
/**
- * Use this only if the processor is not available, otherwise use
- * {@link #release(SocketWrapper, Http11NioProcessor)}.
+ * Expected to be used by the Poller to release resources on socket
+ * close, errors etc.
*/
@Override
public void release(SocketWrapper<NioChannel> socket) {
}
+ /**
+ * Expected to be used by the handler once the processor is no longer
+ * required.
+ *
+ * @param socket
+ * @param processor
+ * @param isSocketClosing Not used in HTTP
+ * @param addToPoller
+ */
public void release(SocketWrapper<NioChannel> socket,
- Http11NioProcessor processor) {
- connections.remove(socket);
+ Http11NioProcessor processor, boolean isSocketClosing,
+ boolean addToPoller) {
processor.recycle();
recycledProcessors.offer(processor);
+ if (addToPoller) {
+ socket.getSocket().getPoller().add(socket.getSocket());
+ }
}
} 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);
- socket.getSocket().getPoller().add(socket.getSocket());
+ release(socket, processor, false, true);
} else {
// Connection closed. OK to recycle the processor.
- release(socket, processor);
+ release(socket, processor, true, false);
}
return state;
} catch (java.net.SocketException e) {
// less-than-verbose logs.
log.error(sm.getString("http11protocol.proto.error"), e);
}
- release(socket, processor);
+ release(socket, processor, true, false);
return SocketState.CLOSED;
}
recycledProcessors.clear();
}
+ /**
+ * Expected to be used by the handler once the processor is no longer
+ * required.
+ *
+ * @param socket Not used in BIO
+ * @param processor
+ * @param isSocketClosing Not used in HTTP
+ * @param addToPoller Not used in BIO
+ */
+ public void release(SocketWrapper<Socket> socket,
+ Http11Processor processor, boolean isSocketClosing,
+ boolean addToPoller) {
+ processor.recycle();
+ recycledProcessors.offer(processor);
+ }
+
@Override
public SocketState process(SocketWrapper<Socket> 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.
- processor.recycle();
- recycledProcessors.offer(processor);
+ release(socket, processor, false, true);
} else {
// Connection closed. OK to recycle the processor.
- processor.recycle();
- recycledProcessors.offer(processor);
+ release(socket, processor, true, false);
}
return state;
} catch(java.net.SocketException e) {
// less-than-verbose logs.
log.error(sm.getString("http11protocol.proto.error"), e);
}
- processor.recycle();
- recycledProcessors.offer(processor);
+ release(socket, processor, true, false);
return SocketState.CLOSED;
}