@Override public void operationComplete(CloseFuture future) { if (session.getStatus() == INFO_SWITCHING_PROTOCOLS) { ProxyUpgradeHandler handler = new ProxyUpgradeHandler(attachedSession.getParent()); session.suspendRead(); if (LOGGER.isDebugEnabled()) { LOGGER.debug(String.format("http.proxy service is upgrading session %s", session)); } session.upgrade(handler); } } }
private boolean add(DefaultHttpSession httpSession) { HttpResourceAddress serverAddress = (HttpResourceAddress)httpSession.getRemoteAddress(); IoSession transportSession = httpSession.getParent(); ServerConnections serverConnections = connections.get(); boolean cached = serverConnections.add(serverAddress, transportSession); if (cached) { if (logger.isDebugEnabled()) { int cachedConnections = serverConnections.cachedConnections(serverAddress); logger.debug(String.format("Caching persistent connection: server = %s session = %s pool = %d", serverAddress.getResource(), transportSession, cachedConnections)); } return true; } else { if (logger.isDebugEnabled()) { int cachedConnections = serverConnections.cachedConnections(serverAddress); logger.debug(String.format("NOT caching persistent connection: server = %s session = %s pool = %d", serverAddress.getResource(), transportSession, cachedConnections)); } } return false; }
private void removeInternal0(DefaultHttpSession session) { IoSession parent = session.getParent(); if (parent == null || parent.isClosing()) { return; } boolean connectionClose = session.isConnectionClose(); if (connectionClose) { // close TCP connection when write complete parent.close(false); } else { // write the empty chunk IoBufferAllocatorEx<? extends HttpBuffer> allocator = session.getBufferAllocator(); HttpBuffer unsharedEmpty = allocator.wrap(allocator.allocate(0)); HttpContentMessage completeMessage = new HttpContentMessage(unsharedEmpty, true, session.isChunked(), session.isGzipped()); parent.write(completeMessage); } }
boolean recycle(DefaultHttpSession httpSession) { if (!add(httpSession)) { return false; } HttpResourceAddress serverAddress = (HttpResourceAddress)httpSession.getRemoteAddress(); IoSession transportSession = httpSession.getParent(); SERVER_ADDRESS.set(transportSession, serverAddress); // Connection needs to be removed from pool upon session's close. Adding // a close future listener for that CloseFuture closeFuture = transportSession.getCloseFuture(); closeFuture.addListener(closeListener); // Track transport session idle so that we don't waste resources. // Upstream server can take new fresh connections if gateway closes idle connections transportSession.getFilterChain().addLast(IDLE_FILTER, idleFilter); int keepAliveTimeout = serverAddress.getOption(HttpResourceAddress.KEEP_ALIVE_TIMEOUT); transportSession.getConfig().setBothIdleTime(keepAliveTimeout); return true; }
@Override public void operationComplete(CloseFuture future) { IoSession parent = session.getParent(); if (parent == null || parent.isClosing()) { return;
try { IoSessionEx parent = session.getParent(); if (parent.isClosing()) {
} else { final UpgradeFuture upgradeFuture = httpSession.getUpgradeFuture(); IoSessionEx parent = httpSession.getParent(); try { if (parent instanceof AbstractBridgeSession<?, ?>) {
IoSession parent = session.getParent(); parent.write(httpRequest);
public void commit(final DefaultHttpSession session) { final IoSession parent = session.getParent(); if (parent == null || parent.isClosing()) { return;
private void removeInternal0(DefaultHttpSession session) { IoSession parent = session.getParent(); if (parent == null || parent.isClosing()) { return;