package com.limegroup.gnutella;
import org.limewire.core.api.lifecycle.LifeCycleEvent;
import org.limewire.listener.EventListener;
/**
* Defines the interface for the start up and shutdown of a LimeWire instance.
*/
public interface LifecycleManager {
public boolean isLoaded();
public boolean isStarted();
public boolean isShutdown();
/** Phase 1 of the startup process -- loads any tasks that can be run in the background. */
public void loadBackgroundTasks();
/** The core of the startup process, initializes all classes. */
public void start();
/**
* Shuts down anything that requires shutdown.
*/
// TODO: Make all of these things Shutdown Items.
public void shutdown();
/** Shuts down & executes something after shutdown completes. */
public void shutdown(String toExecute);
/** Gets the time this finished starting. */
public long getStartFinishedTime();
public void addListener(EventListener<LifeCycleEvent> listener);
public boolean removeListener(EventListener<LifeCycleEvent> listener);
}