FileDocCategorySizeDatePackage
StateHelper.javaAPI DocJMF 2.1.1e3803Mon May 12 12:20:32 BST 2003jmapps.util

StateHelper

public class StateHelper extends Object implements ControllerListener
A utility class to perform synchronous state transition for Players and Processors.

Fields Summary
Player
player
boolean
configured
boolean
realized
boolean
prefetched
boolean
eom
boolean
failed
boolean
closed
Constructors Summary
public StateHelper(Player p)

    
       
	player = p;
	p.addControllerListener(this);
    
Methods Summary
public voidclose()
Close the player.

	synchronized (this) {
	    player.close();
	    while (!closed) {
		try {
		    wait(100);
		} catch (InterruptedException ie) {
		}
	    }
	}
	player.removeControllerListener(this);
    
public booleanconfigure()

	return configure(Integer.MAX_VALUE);
    
public booleanconfigure(int timeOutMillis)
Configure the player. This method will block until either the player has been configured or the configure has failed.

	long startTime = System.currentTimeMillis();
	synchronized (this) {
	    if (player instanceof Processor)
		((Processor)player).configure();
	    else
		return false;
	    while (!configured && !failed) {
		try {
		    wait(timeOutMillis);
		} catch (InterruptedException ie) {
		}
		if (System.currentTimeMillis() - startTime > timeOutMillis)
		    break;
	    }
	}
	return configured;
    
public synchronized voidcontrollerUpdate(javax.media.ControllerEvent ce)

	if (ce instanceof RealizeCompleteEvent) {
	    realized = true;
	} else if (ce instanceof ConfigureCompleteEvent) {
	    configured = true;
	} else if (ce instanceof PrefetchCompleteEvent) {
	    prefetched = true;
	} else if (ce instanceof EndOfMediaEvent) {
	    eom = true;
	} else if (ce instanceof ControllerErrorEvent) {
	    failed = true;
	} else if (ce instanceof ControllerClosedEvent) {
	    closed = true;
	} else {
	    return;
	}
	notifyAll();
    
public booleanplayToEndOfMedia(int timeOutMillis)
Start the player and play till the end of the media. This method will block until either the player has finished playing the media or the playback has failed at some point.

	long startTime = System.currentTimeMillis();
	eom = false;
	synchronized (this) {
	    player.start();
	    while (!eom && !failed) {
		try {
		    wait(timeOutMillis);
		} catch (InterruptedException ie) {
		}
		if (System.currentTimeMillis() - startTime > timeOutMillis)
		    break;
	    }
	}
	return eom && !failed;
    
public booleanprefetch(int timeOutMillis)
Prefetch the player. This method will block until either the player has been configured or the configure has failed.

	long startTime = System.currentTimeMillis();
	synchronized (this) {
	    player.prefetch();
	    while (!prefetched && !failed) {
		try {
		    wait(timeOutMillis);
		} catch (InterruptedException ie) {
		}
		if (System.currentTimeMillis() - startTime > timeOutMillis)
		    break;
	    }
	}
	return prefetched && !failed;
    
public booleanrealize()

	return realize(Integer.MAX_VALUE);
    
public booleanrealize(int timeOutMillis)
Realize the player. This method will block until either the player has been realized or the realize has failed.

	long startTime = System.currentTimeMillis();
	synchronized (this) {
	    player.realize();
	    while (!realized && !failed) {
		try {
		    wait(timeOutMillis);
		} catch (InterruptedException ie) {
		}
		if (System.currentTimeMillis() - startTime > timeOutMillis)
		    break;
	    }
	}
	return realized;