@Override
    public final void destroy() {
        if (closed) {
            return;
        }

        closed = true;
        isInitialized = true;
        if (connectionIdleTimeout != null) {
            connectionIdleTimeout.cancel(false);
            connectionIdleTimeout = null;
        }
        if (pingIdleTimeout != null) {
            pingIdleTimeout.cancel(false);
            pingIdleTimeout = null;
        }
        if (maxConnectionAgeFuture != null) {
            maxConnectionAgeFuture.cancel(false);
            maxConnectionAgeFuture = null;
        }
        pingState = PingState.SHUTDOWN;
        isMaxConnectionAgeExceeded = true;
        cancelFutures();
    }
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