@Override public void handleClose() throws IOException { boolean debugEnabled = log.isDebugEnabled(); if (debugEnabled) { log.debug("handleClose({}) SSH_MSG_CHANNEL_CLOSE", this); } if (!isEofSent()) { if (debugEnabled) { log.debug("handleClose({}) prevent sending EOF", this); } } if (gracefulState.compareAndSet(GracefulState.Opened, GracefulState.CloseReceived)) { close(false); } else if (gracefulState.compareAndSet(GracefulState.CloseSent, GracefulState.Closed)) { gracefulFuture.setClosed(); } }
@Override public void handleClose() throws IOException { boolean debugEnabled = log.isDebugEnabled(); if (debugEnabled) { log.debug("handleClose({}) SSH_MSG_CHANNEL_CLOSE", this); } if (!isEofSent()) { if (debugEnabled) { log.debug("handleClose({}) prevent sending EOF", this); } } if (gracefulState.compareAndSet(GracefulState.Opened, GracefulState.CloseReceived)) { close(false); } else if (gracefulState.compareAndSet(GracefulState.CloseSent, GracefulState.Closed)) { gracefulFuture.setClosed(); } }
@Override protected void preClose() { if (!isEofSent()) { log.debug("close({}) prevent sending EOF", this); } try { signalChannelClosed(null); } finally { // clear the listeners since we are closing the channel (quicker GC) this.channelListeners.clear(); } IOException err = IoUtils.closeQuietly(getLocalWindow(), getRemoteWindow()); if (err != null) { if (log.isDebugEnabled()) { log.debug("Failed (" + err.getClass().getSimpleName() + ") to pre-close window(s) of " + this + ": " + err.getMessage()); } if (log.isTraceEnabled()) { Throwable[] suppressed = err.getSuppressed(); if (GenericUtils.length(suppressed) > 0) { for (Throwable t : suppressed) { log.trace("Suppressed " + t.getClass().getSimpleName() + ") while pre-close window(s) of " + this + ": " + t.getMessage()); } } } } super.preClose(); }
@Override protected void preClose() { if (!isEofSent()) { log.debug("close({}) prevent sending EOF", this); } try { signalChannelClosed(null); } finally { // clear the listeners since we are closing the channel (quicker GC) this.channelListeners.clear(); // clear the attributes since we close the channel clearAttributes(); } IOException err = IoUtils.closeQuietly(getLocalWindow(), getRemoteWindow()); if (err != null) { if (log.isDebugEnabled()) { log.debug("Failed (" + err.getClass().getSimpleName() + ") to pre-close window(s) of " + this + ": " + err.getMessage()); } if (log.isTraceEnabled()) { Throwable[] suppressed = err.getSuppressed(); if (GenericUtils.length(suppressed) > 0) { for (Throwable t : suppressed) { log.trace("Suppressed " + t.getClass().getSimpleName() + ") while pre-close window(s) of " + this + ": " + t.getMessage()); } } } } super.preClose(); }