code: @Override
    public void onTimer(String timerName) {
      if (timerName.equals(IDLE_SESSION_TIMER_NAME)) {
        checkIdleAppSession();
      }
      else if (timerName.equals(TIMER_NAME_INTERIM)) {
        if (context != null) {
          try {
            Request interimRecord = createInterimRecord();
            context.interimIntervalElapses(this, interimRecord);
            sendAndStateLock.lock();
            session.send(interimRecord, ClientRfSessionImpl.this);
            setState(PENDING_INTERIM);
            sessionData.setTsTimerId(null);
          }
          catch (Exception e) {
            logger.debug("Can not process Interim Interval AVP", e);
          }
          finally {
            sendAndStateLock.unlock();
          }
        }
      }
      else {
        logger.warn("Received an unknown timer '{}' for Session-ID '{}'", timerName, getSessionId());
      }
    }
docs: /* (non-Javadoc)
  @see org.jdiameter.common.impl.app.AppSessionImpl#onTimer(java.lang.String)