private void closeChannelAndLog() {
        if (pingState == PingState.SHUTDOWN) {
            return;
        }
        logger.debug("{} Closing an idle channel", channel);
        pingState = PingState.SHUTDOWN;
        channel.close().addListener(future -> {
            if (future.isSuccess()) {
                logger.debug("{} Closed an idle channel", channel);
            } else {
                logger.debug("{} Failed to close an idle channel", channel, future.cause());
            }
        });
    }
An {@link AbstractKeepAliveHandler} that writes a PING when neither read nor write was performed for
the specified {@code pingIntervalMillis}, and closes the connection
when neither read nor write was performed within the given {@code idleTimeoutMillis}.
core/src/main/java/com/linecorp/armeria/internal/common/AbstractKeepAliveHandler.java