Ejemplo n.º 1
0
 /** Call only with state lock, from state itself it should have the lock already */
 @Override
 public void changeState(final IServerState newState) {
   if (currentServerState.equals(newState) == false) {
     // reset state timeout timer.
     if (currentStateTimeoutTask != null) {
       currentStateTimeoutTask.cancel();
       currentStateTimeoutTask = null;
     }
     // check if the new state wants a timeout timer, and how long the
     // timeout shall be
     if (newState.getStateTimeoutMillis() != 0) {
       currentStateTimeoutTask = new StateTimeoutTask();
       stateTimeoutTimer.schedule(currentStateTimeoutTask, newState.getStateTimeoutMillis());
     }
     currentServerState = newState;
     LOGGER.trace("sip server changed state to " + newState.getCurrentState().toString());
     currentServerState.onInit();
     stateChangeCondition.signalAll();
   }
 }