private void enableCloseIfIdleTask() {
    log.info("enableCloseIfIdleTask is enabled.");
    NettyUtils.warnIfNotInEventLoop(parentChannel.eventLoop());

    // Don't poll more frequently than 800 ms. Being overly-conservative is okay. Blowing up our CPU is not.
    long taskFrequencyMillis = Math.max(allowedIdleTimeInMs, 800);

    closeIfIdleTask = parentChannel.eventLoop()
        .scheduleAtFixedRate(this::closeIfIdle, taskFrequencyMillis, taskFrequencyMillis, TimeUnit.MILLISECONDS);
    parentChannel.closeFuture().addListener(f -> closeIfIdleTask.cancel(false));
  }
Contains a {@link Future} for the actual socket channel and tracks available stream channels.
ambry-network/src/main/java/com/github/ambry/network/http2/MultiplexedChannelRecord.java