package edu.uw.cse.netlab.utils; import java.util.logging.Logger; import org.gudy.azureus2.core3.util.Debug; import com.aelitis.azureus.core.AzureusCore; import com.aelitis.azureus.core.AzureusCoreComponent; import com.aelitis.azureus.core.AzureusCoreException; import com.aelitis.azureus.core.AzureusCoreLifecycleListener; import com.aelitis.azureus.core.impl.AzureusCoreImpl; public abstract class CoreWaiter { private static Logger logger = Logger.getLogger(CoreWaiter.class.getName()); public CoreWaiter() { if( AzureusCoreImpl.isCoreAvailable() == false ) { logger.warning("core not available yet. can't start!"); return; } if( AzureusCoreImpl.getSingleton().isStarted() == false ) { logger.warning("Core not started yet, listening..."); AzureusCoreImpl.getSingleton().addLifecycleListener(new AzureusCoreLifecycleListener(){ public void componentCreated( AzureusCore core, AzureusCoreComponent component ) {} public boolean requiresPluginInitCompleteBeforeStartedEvent() { return false; } public boolean restartRequested( AzureusCore core ) throws AzureusCoreException { return false; } public void started( AzureusCore core ) { logger.fine("got start"); init(); } public boolean stopRequested( AzureusCore core ) throws AzureusCoreException { return false; } public void stopped( AzureusCore core ) {} public void stopping( AzureusCore core ) {} public boolean syncInvokeRequired() { return false; }}); } else init(); } protected abstract void init(); }