blob: cd38cf067d1501d83db8869867bd87b447f156bf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1997-2007 by ProSyst Software GmbH
* http://www.prosyst.com
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* ProSyst Software GmbH - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.util.timer;
/**
* Timer service provides means for sending notifications at given time periods
* to each listener registered with Timer. To receive notifications, a module
* should first register a TimerListener, associated with an (int) event and a
* time period. When the time period passes, TimerListener's timer method is
* invoked, and the listener is removed from the queue with the waiting event
* notifications.
*
* @see TimerListener
*
* @author Pavlin Dobrev
* @version 1.0
*/
public interface Timer {
/**
* Constant indicates that timer listener will be notified only once and
* afterwards discarded.
*/
public int ONE_SHOT_TIMER = 0;
/**
* Constant indicates that timer listener will be notified periodically at a
* given time interval.
*/
public int PERIODICAL_TIMER = 1;
/**
* Constant indicates that timer listener will be notified only once. Timer
* implementation would do its best to execute the notification with minimum
* possible delay.
*/
public int ONE_SHOT_TIMER_NO_DELAY = 2;
/**
* Constant indicates that timer listener will be notified periodically at a
* given time interval. Timer implementation would do its best to execute
* the notification with minimum possible delay.
*/
public int PERIODICAL_TIMER_NO_DELAY = 3;
/**
* Adds new TimerListener to the timer event quueue. The listener will be
* notified after the given <code>timePeriod</code> with specified
* <code>event</code>. If the event queue already contains a listener and
* event pair equal to those being passed, then the old notification object
* is removed from queue and the new data takes its place.
*
* @param listener
* the listener which will be notified after the given time
* period
* @param timePeriod
* time period in milliseconds after which the listener will be
* notified
* @param event
* which will be supplied to the listener when it is notified
*
* @exception IllegalArgumentException
* if time period is not positive
* @deprecated
*/
public void notifyAfterMillis(TimerListener listener, long timePeriod, int event) throws IllegalArgumentException;
/**
* Adds new TimerListener to the timer event quueue. The listener will be
* notified after the given <code>timePeriod</code> with specified
* <code>event</code>. If the event queue already contains a listener and
* event pair equal to those being passed, then the old notification object
* is removed from queue and the new data takes its place.
*
* @param listener
* the listener which will be notified after the given time
* period
* @param priority
* priority of executing thread
* @param timePeriod
* time period in milliseconds after which the listener will be
* notified
* @param event
* which will be supplied to the listener when it is notified
*
* @exception IllegalArgumentException
* if time period is not positive priority is not between
* Thread.MIN_PRIORITY and Thread.MAX_PRIORITY
* @deprecated
*/
public void notifyAfterMillis(TimerListener listener, int priority, long timePeriod, int event) throws IllegalArgumentException;
/**
* Adds new TimerListener to the timer event quueue. The listener will be
* notified after the given <code>timePeriod</code> with specified
* <code>event</code>. If the event queue already contains a listener and
* event pair equal to those being passed, then the old notification object
* is removed from queue and the new data takes its place.
*
* @param listener
* the listener which will be notified after the given time
* period
* @param timePeriod
* time period in seconds after which the listener will be
* notified
* @param event
* which will be supplied to the listener when it is notified
*
* @exception IllegalArgumentException
* if time period is not positive
* @deprecated
*/
public void notifyAfter(TimerListener listener, int timePeriod, int event) throws IllegalArgumentException;
/**
* Adds new TimerListener to the timer event quueue. The listener will be
* notified after the given <code>timePeriod</code> with specified
* <code>event</code>. If the event queue already contains a listener and
* event pair equal to those being passed, then the old notification object
* is removed from queue and the new data takes its place.
*
* @param listener
* the listener which will be notified after the given time
* period
* @param priority
* priority of executing thread
* @param timePeriod
* time period in seconds after which the listener will be
* notified
* @param event
* which will be supplied to the listener when it is notified
*
* @exception IllegalArgumentException
* if time period is not positive or priority is not between
* Thread.MIN_PRIORITY and Thread.MAX_PRIORITY
* @deprecated
*/
public void notifyAfter(TimerListener listener, int priority, int timePeriod, int event) throws IllegalArgumentException;
/**
* Adds new TimerListener to the timer event quueue. The listener will be
* notified after the given <code>timePeriod</code> with specified
* <code>event</code>. If the event queue already contains a listener and
* event pair equal to those being passed, then the old notification object
* is removed from queue and the new data takes its place.
*
* @param listener
* the listener which will be notified after the given time
* period
* @param priority
* priority of executing thread
* @param timerType
* the type of the timer "Periodical", "One shot", "Periodical No
* Delay", or "One shot no delay"
* @param timePeriod
* time period in seconds after which the listener will be
* notified
* @param event
* which will be supplied to the listener when it is notified
*
* @exception IllegalArgumentException
* if time period is not positive or priority is not between
* Thread.MIN_PRIORITY and Thread.MAX_PRIORITY or the
* timerType is not a correct timer type or the listener is
* null
*/
public void addNotifyListener(TimerListener listener, int priority, int timerType, long periodMilis, int event);
/**
* Removes the TimerListener-event pair from the queue, so that the listener
* should not be notified after the time period passes.
*
* @param listener
* to be removed.
* @param event
* for which the timer listener should have been notified.
*
*/
public void removeListener(TimerListener listener, int event);
}