private long getStopwatchElapsedInNanos() {
        if (stopwatch == null) {
            return -1;
        }
        return stopwatch.elapsed(TimeUnit.NANOSECONDS);
    }
A {@link KeepAliveHandler} that sends an HTTP/2 PING frame
when neither read nor write was performed within the specified {@code pingIntervalMillis},
and closes the connection when neither read nor write was performed within
the given {@code idleTimeoutMillis}.

<p>Once a {@link Http2PingFrame} is written, then either an ACK for the {@link Http2PingFrame} or any data
is read on connection will invalidate the condition that triggers connection closure.

<p>This class is <b>not</b> thread-safe and all methods are to be called from single thread such
as {@link EventLoop}.

@see Flags#defaultClientIdleTimeoutMillis()
@see Flags#defaultServerIdleTimeoutMillis()
@see Flags#defaultPingIntervalMillis()
core/src/main/java/com/linecorp/armeria/internal/common/Http2KeepAliveHandler.java