gov.nist.javax.sip.stack.timers.SipTimer Maven / Gradle / Ivy
/*
* Conditions Of Use
*
* This software was developed by employees of the National Institute of
* Standards and Technology (NIST), an agency of the Federal Government.
* Pursuant to title 15 Untied States Code Section 105, works of NIST
* employees are not subject to copyright protection in the United States
* and are considered to be in the public domain. As a result, a formal
* license is not needed to use the software.
*
* This software is provided by NIST as a service and is expressly
* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
* AND DATA ACCURACY. NIST does not warrant or make any representations
* regarding the use of the software or the results thereof, including but
* not limited to the correctness, accuracy, reliability or usefulness of
* the software.
*
* Permission to use this software is contingent upon your acceptance
* of the terms of this agreement
*
* .
*
*/
package gov.nist.javax.sip.stack.timers;
import gov.nist.javax.sip.SipStackImpl;
import gov.nist.javax.sip.stack.SIPStackTimerTask;
import java.util.Properties;
/**
* Interface to implement to plug a new Timer implementation. currently the ones provided with the stack are based on java.util.Timer
* or java.util.concurrent.ScheduledThreadPoolExecutor
*
* @author [email protected]
*
*/
public interface SipTimer {
/**
* Schedule a new SIPStackTimerTask after the specified delay
* @param task the task to schedule
* @param delay the delay in milliseconds to schedule the task
* @return true if the task was correctly scheduled, false otherwise
*/
boolean schedule(SIPStackTimerTask task, long delay);
/**
* Schedule a new SIPStackTimerTask after the specified delay
* @param task the task to schedule
* @param delay the delay in milliseconds to schedule the task
* @param period the period to run the task after it has been first scheduled
* @return true if the task was correctly scheduled, false otherwise
*/
boolean scheduleWithFixedDelay(SIPStackTimerTask task, long delay, long period);
/**
* Stop the Timer (called when the stack is stop or reinitialized)
*/
void stop();
/**
* cancel a previously scheduled task
* @param task task to cancel
* @return true if the task was cancelled, false otherwise
*/
boolean cancel(SIPStackTimerTask task);
/**
* Start the SIP Timer, called when the stack is created. The stack configuration is passed
* so that different implementations can use specific config properties to configure themselves
* @param sipStack TODO
* @param configurationProperties the stack properties
*/
void start(SipStackImpl sipStack, Properties configurationProperties);
/**
* Check if the timer is started or stopped
* @return true is the timer is started false otherwise
*/
boolean isStarted();
}