package monolipse.core.interpreter;
import java.io.IOException;
import monolipse.core.compiler.AbstractBooServiceClient;
import monolipse.core.launching.IProcessMessageHandler;
import monolipse.core.launching.ProcessMessage;
import org.eclipse.core.runtime.CoreException;
public class InteractiveInterpreter extends AbstractBooServiceClient {
IInterpreterListener _listener;
public InteractiveInterpreter() throws CoreException {
setMessageHandler("EVAL-RESPONSE", new IProcessMessageHandler() {
public void handle(ProcessMessage message) {
if (null == _listener) return;
_listener.evalFinished(message.payload);
}
});
}
public void eval(String code) throws IOException {
send("EVAL", code);
}
protected String getProposalsMessageId() {
return "GET-INTERPRETER-PROPOSALS";
}
public void addListener(IInterpreterListener listener) {
if (null != _listener) throw new IllegalStateException("only a single listener is supported");
_listener = listener;
}
}