public void run() { long keepAliveTimeout = ((TcpConnector) connector).getKeepAliveTimeout(); try { do { conn.setKeepAlive(false); // Only add a monitor if the timeout has been set if (keepAliveTimeout > 0) { ((HttpConnector) connector) .getKeepAliveMonitor() .addExpirable(keepAliveTimeout, TimeUnit.MILLISECONDS, this); } HttpRequest request = conn.readRequest(); if (request == null) { break; } // Ensure that we drop any monitors, we'll add again for the next request ((HttpConnector) connector).getKeepAliveMonitor().removeExpirable(this); conn.writeResponse(processRequest(request)); if (request.getBody() != null) { request.getBody().close(); } } while (conn.isKeepAlive()); } catch (Exception e) { handleException(e); } finally { logger.debug("Closing HTTP connection."); if (conn.isOpen()) { conn.close(); conn = null; // Ensure that we drop any monitors ((HttpConnector) connector).getKeepAliveMonitor().removeExpirable(this); } } }
public void release() { conn.close(); conn = null; }
public void expired() { if (conn.isOpen()) { conn.close(); } }