// Copyright 2002, FreeHEP.
package org.freehep.util.io;
import java.io.IOException;
import java.io.InputStream;
/**
* The PromptInputStream reads from an inputstream until it reads any prompt for
* which a listener is added. The listener is informed that the prompt is found.
* The route which contains the prompt is supplied as a parameter to the
* listener. Returning from the prompt listener without reading the route to its
* end will allow the main stream to read it.
*
* The implementation of this class is based on the RoutedInputStream.
*
* @author Mark Donszelmann
* @version $Id: PromptInputStream.java,v 1.3 2008-05-04 12:21:47 murkle Exp $
*/
public class PromptInputStream extends RoutedInputStream {
/**
* Craete a Prompt input stream.
*
* @param input
* stream to read
*/
public PromptInputStream(InputStream input) {
super(input);
}
/**
* Add a prompt listener for given prompt.
*
* @param prompt
* prompt to listen for
* @param listener
* listener to be informed
*/
public void addPromptListener(String prompt, PromptListener listener) {
final PromptListener promptListener = listener;
addRoute(prompt, prompt, new RouteListener() {
@Override
public void routeFound(RoutedInputStream.Route input)
throws IOException {
promptListener.promptFound(input);
}
});
}
}