code: private void resetReceiveIdleTimer(Event event) {
          final String methodName = "resetReceiveIdleTimer";
          logger.entry(this, methodName, event);
  
          if (receiveScheduledFuture != null) {
              receiveScheduledFuture.cancel(false);
          }
  
          final Transport transport = event.getTransport();
          if (transport != null) {
              final int localIdleTimeOut = transport.getIdleTimeout();
              if (localIdleTimeOut > 0) {
                  Runnable receiveTimeout = new Runnable() {
                      @Override
                      public void run() {
                          final String methodName = "run";
                          logger.entry(this, methodName);
                          transport.process();
                          transport.tick(System.currentTimeMillis());
                          logger.exit(methodName);
                      }
                  };
                  receiveScheduledFuture = scheduler.schedule(receiveTimeout,
                          localIdleTimeOut, TimeUnit.MILLISECONDS);
              }
          }
          logger.exit(this, methodName);
      }
docs: Reset the local idle timers, now that we have received some data.
  
  If we have set an idle timeout the client must send some data at least that often,
  we double the timeout before checking.