package org.python.pydev.debug.model.remote;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.python.pydev.debug.core.PydevDebugPlugin;
import org.python.pydev.debug.model.AbstractDebugTarget;
public class EvaluateConsoleExpressionCommand extends AbstractDebuggerCommand {
private boolean isError = false;
private String locator;
private int responseCode;
private String payload;
public EvaluateConsoleExpressionCommand(AbstractDebugTarget debugger, String locator,
ICommandResponseListener responseListener) {
super(debugger);
this.locator = locator;
this.responseListener = responseListener;
}
@Override
public String getOutgoing() {
int cmd = CMD_EVALUATE_CONSOLE_EXPRESSION;
return makeCommand(cmd, sequence, locator);
}
public boolean needResponse() {
return true; // Allows the command to wait till a response is received.
}
public void processOKResponse(int cmdCode, String payload) {
this.responseCode = cmdCode;
if (responseCode == CMD_EVALUATE_CONSOLE_EXPRESSION)
this.payload = payload;
else {
isError = true;
PydevDebugPlugin.log(IStatus.ERROR, "Unexpected response to GetTaskletCallStackCommand", null);
}
}
public void processErrorResponse(int cmdCode, String payload) {
this.responseCode = cmdCode;
this.payload = payload;
isError = true;
}
public String getResponse() throws CoreException {
if (isError)
throw new CoreException(PydevDebugPlugin.makeStatus(IStatus.ERROR, payload, null));
else
return payload;
}
}