@Override
    public void channelRead0(ChannelHandlerContext ctx, String message) {
        // Get the parser to use to process stanza. For optimization there is going
        // to be a parser for each running thread. Each Filter will be executed
        // by the Executor placed as the first Filter. So we can have a parser associated
        // to each Thread
        final XMPPPacketReader parser = PARSER_CACHE.get();

        // Update counter of read bytes
        updateReadBytesCounter(ctx);

        Log.trace("Handler on {} received: {}", ctx.channel().remoteAddress() == null ? ctx.channel().localAddress() : ctx.channel().localAddress() + "--" + ctx.channel().remoteAddress(), message);
        // Let the stanza handler process the received stanza
        try {
            ctx.channel().attr(HANDLER).get().process(message, parser);
        } catch (Throwable e) { // Make sure to catch Throwable, not (only) Exception! See OF-2367
            Log.error("Closing connection on {} due to error while processing message: {}", ctx.channel().remoteAddress() == null ? ctx.channel().localAddress() : ctx.channel().localAddress() + "--" + ctx.channel().remoteAddress(), message, e);
            final Connection connection = ctx.channel().attr(CONNECTION).get();
            if ( connection != null ) {
                connection.close(new StreamError(StreamError.Condition.internal_server_error, "An error occurred while processing data raw inbound data."));
            }
        }
    }
Returns the time that a connection can be idle before being closed.

@return the time a connection can be idle.
xmppserver/src/main/java/org/jivesoftware/openfire/nio/NettyConnectionHandler.java