expirationTimerTask = sipContext.getSipApplicationSessionTimerService().createSipApplicationSessionTimerTask(this); expirationTimerTask = sipContext.getSipApplicationSessionTimerService().schedule(expirationTimerTask, deltaMilliseconds, TimeUnit.MILLISECONDS);
private void cancelExpirationTimer() { if(expirationTimerTask != null) { // http://code.google.com/p/mobicents/issues/detail?id=2322 : Race condition can occur so making sure the expiration timer task is not null sipContext.getSipApplicationSessionTimerService().cancel(expirationTimerTask); } if(expirationTimerTask != null) { // http://code.google.com/p/mobicents/issues/detail?id=2322 : expiration Timer task can be null after calling cancel above due to Race condition expirationTimerTask.setSipApplicationSession(null); expirationTimerTask = null; } }
if(sasTimerService == null || !sasTimerService.isStarted()) { sasTimerService = new StandardSipApplicationSessionTimerService();
expirationTimerTask = sipContext.getSipApplicationSessionTimerService().createSipApplicationSessionTimerTask(this);
if(sasTimerService == null || !sasTimerService.isStarted()) { sasTimerService = new StandardSipApplicationSessionTimerService();
proxyTimerService = new ProxyTimerServiceImpl(); if(sasTimerService == null || !sasTimerService.isStarted()) {
@SuppressWarnings("unchecked") public void run() { try { if(logger.isDebugEnabled()) { logger.debug("initial kick off of SipApplicationSessionTimerTask running for sip application session " + sipApplicationSession.getId()); } long sleep = getDelay(); if(sleep > 0) { // if the session has been accessed since we started it, put it to sleep if(logger.isDebugEnabled()) { logger.debug("expirationTime is " + sipApplicationSession.getExpirationTimeInternal() + ", now is " + System.currentTimeMillis() + " sleeping for " + sleep / 1000L + " seconds"); } final SipContext sipContext = sipApplicationSession.getSipContext(); final SipApplicationSessionTimerTask expirationTimerTask = sipContext.getSipApplicationSessionTimerService().createSipApplicationSessionTimerTask(sipApplicationSession); sipApplicationSession.setExpirationTimerTask(expirationTimerTask); sipContext.getSipApplicationSessionTimerService().schedule(expirationTimerTask, sleep, TimeUnit.MILLISECONDS); } else { tryToExpire(); } } catch (Throwable t) { logger.error("Timer problem", t); } }
@SuppressWarnings("unchecked") public void run() { try { if(logger.isDebugEnabled()) { logger.debug("initial kick off of SipApplicationSessionTimerTask running for sip application session " + sipApplicationSession.getId()); } long sleep = getDelay(); if(sleep > 0) { // if the session has been accessed since we started it, put it to sleep if(logger.isDebugEnabled()) { logger.debug("expirationTime is " + sipApplicationSession.getExpirationTimeInternal() + ", now is " + System.currentTimeMillis() + " sleeping for " + sleep / 1000L + " seconds"); } final SipContext sipContext = sipApplicationSession.getSipContext(); final SipApplicationSessionTimerTask expirationTimerTask = sipContext.getSipApplicationSessionTimerService().createSipApplicationSessionTimerTask(sipApplicationSession); sipApplicationSession.setExpirationTimerTask(expirationTimerTask); sipContext.getSipApplicationSessionTimerService().schedule(expirationTimerTask, sleep, TimeUnit.MILLISECONDS); } else { tryToExpire(); } } catch (Throwable t) { logger.error("Timer problem", t); } }
protected void scheduleExpirationTimer(MobicentsSipApplicationSession sipApplicationSession) { // Sip Application Session Timer Task moved out of the SipApplicationSession constructor // as for clustering it might not be needed to reschedule them on recreation final SipContext sipContext = sipApplicationSession.getSipContext(); if(sipContext != null) { if(sipContext.getSipApplicationSessionTimeout() > 0) { SipApplicationSessionTimerTask expirationTimerTask = sipContext.getSipApplicationSessionTimerService().createSipApplicationSessionTimerTask(sipApplicationSession); expirationTimerTask = sipContext.getSipApplicationSessionTimerService().schedule(expirationTimerTask, sipApplicationSession.getSipApplicationSessionTimeout(), TimeUnit.MILLISECONDS); sipApplicationSession.setExpirationTimerTask(expirationTimerTask); } sipApplicationSession.notifySipApplicationSessionListeners(SipApplicationSessionEventType.CREATION); } }