blob: 73af2f4752eff6c17cbf5b019b36bd6741a6e05a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2008 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Andrew Niefer - IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.osgi.service.runnable;
/**
* Service interface used to monitor the startup process.
*
* Bundles can register a monitor in order to be given processing time on the
* primary thread during the startup process. Clients with threading restrictions can
* use this interface to process events that may have been collected from another thread.
* <p>
* Monitors share time on the primary thread. The primary thread used to run the application
* will not proceed until monitors return from any operation. Because of this, monitors should
* not perform long running operations.
* </p>
* <p>
* Clients may implement this interface but should not invoke it. The platform
* is responsible for invoking the monitor at the appropriate times.
* </p>
* @since 3.3
*/
public interface StartupMonitor {
/**
* Update the monitor. This method is periodically called by the platform from the primary thread during
* periods where the primary thread is waiting on another thread (ie start level increasing, refreshing packages)
* <p>
* If multiple monitors are registered then the platform will only call the monitor with the highest service
* ranking. In case of a service ranking tie the service with the lowest service id is selected (i.e. the
* first monitor registered).
* </p>
*/
public void update();
/**
* This method is called by the platform from the primary thread once the application is completely
* initialized and running. This method should perform certain operations that are needed once an
* application is running. One example is bringing down a splash screen if it exists.
* <p>
* If multiple monitors are registered then the platform will call all monitors. The monitors are called
* according to service ranking; monitors with higher service rankings are called first. In case of a
* service ranking tie the service with the lowest service id is called first (i.e. the first monitor registered).
* </p>
*/
public void applicationRunning();
}