blob: 4d54e71f591ab7d256ece5484753d6c7843ae00a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2010 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.provisional.p2.updatechecker;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.query.IQuery;
/**
* An update checker periodically polls for updates to specified profiles and
* informs listeners if updates are available. Listeners may then determine
* whether to retrieve the updates, inform the user, etc.
*/
public interface IUpdateChecker {
public static final String SERVICE_NAME = IUpdateChecker.class.getName();
public static long ONE_TIME_CHECK = -1L;
/**
* Adds an update listener that will be notified when updates are available for all
* installable units that satisfy the given query. The listener will remain
* registered until removed using the {@link #removeUpdateCheck(IUpdateListener)}
* method. Adding a listener that is identical to a listener that is already registered
* has no effect.
* <p>
* Once the listener is registered, it will continue to receive notification of updates
* based on the specified polling frequency. However, if a delay value of {@link #ONE_TIME_CHECK}
* is used, only a single update check will occur for that listener. If this delay value
* is used, the specified polling frequency is ignored.
*
* @param profileId The profile id to check for updates
* @param iusToCheckQuery An installable unit query that matches the units to check for updates
* @param delay The delay in milliseconds before the first query should occur, or {@link #ONE_TIME_CHECK}
* to indicate that a single update check should occur immediately
* @param poll The polling frequency, in milliseconds, between checks for updates
* @param listener The listener to be notified of updates
* @see #removeUpdateCheck(IUpdateListener)
*/
public abstract void addUpdateCheck(String profileId, IQuery<IInstallableUnit> iusToCheckQuery, long delay, long poll, IUpdateListener listener);
/**
* Removes an update listener from the set of listeners registered with this update
* checker. If an update check is currently in progress the listener may still receive
* events after this method returns. Removing a listener that is not registered has
* no effect.
*
* @param listener The listener to remove
* @see #addUpdateCheck(String, IQuery, long, long, IUpdateListener)
*/
public abstract void removeUpdateCheck(IUpdateListener listener);
}