package fireTester.interfaces;


/**
 * Keeps tabs on all our clients, sending Tests and forwarding results.
 */
public interface ServerController {
	/**
	 * This is a non-blocking call which will queue a SubmissionTest to be executed
	 * 
	 * @param t the text to send to a client for execution.
	 */
	public void queueTest(SubmissionTest t);
	
	/**
	 * Register a new ResultsObserver.
	 * 
	 * @param o the object to receive results as they arrive.
	 */
	public void registerObserver(ResultsObserver o);
	
	/**
	 * Stops sending results to the specified object.
	 * 
	 * @param o the object no longer interested in updates.
	 */
	public void detachObserver(ResultsObserver o);
}
