public IoFuture close()

in core/src/main/java/org/apache/mina/transport/nio/AbstractNioSession.java [121:158]


    public IoFuture<Void> close(final boolean immediately) {
        switch (state) {
        case CREATED:
            LOG.error("Session {} not opened", this);
            throw new IllegalStateException("cannot close an not opened session");
        case CONNECTED:
            state = SessionState.CLOSING;
            if (immediately) {
                channelClose();
                processSessionClosed();
            } else {
                if (isSecured()) {
                    SslHelper sslHelper = getAttribute(SSL_HELPER, null);
                    if (sslHelper != null) {
                        try {
                            sslHelper.close();
                        } catch (IOException e) {
                            processException(e);
                        }
                    }
                }
                // flush this session the flushing code will close the session
                flushWriteQueue();
            }
            break;
        case CLOSING:
            // return the same future
            LOG.warn("Already closing session {}", this);
            break;
        case CLOSED:
            LOG.warn("Already closed session {}", this);
            break;
        default:
            throw new IllegalStateException("not implemented session state : " + state);
        }

        return closeFuture;
    }