blob: 9df4ffa092dfff90e43a1ed3bc60d74cc6d8c65d [file] [log] [blame]
package com.jetbrains.python.debugger.pydev;
import com.intellij.xdebugger.frame.XValueChildrenList;
import com.jetbrains.python.debugger.IPyDebugProcess;
import com.jetbrains.python.debugger.PyDebugValue;
import com.jetbrains.python.debugger.PyDebuggerException;
import java.util.List;
public class GetFrameCommand extends AbstractFrameCommand {
protected final IPyDebugProcess myDebugProcess;
private XValueChildrenList myFrameVariables = null;
public GetFrameCommand(final RemoteDebugger debugger, final String threadId, final String frameId) {
this(debugger, GET_FRAME, threadId, frameId);
}
protected GetFrameCommand(final RemoteDebugger debugger, final int command, final String threadId, final String frameId) {
super(debugger, command, threadId, frameId);
myDebugProcess = debugger.getDebugProcess();
}
@Override
protected void buildPayload(Payload payload) {
super.buildPayload(payload);
payload.add("FRAME");
}
@Override
public boolean isResponseExpected() {
return true;
}
@Override
protected void processResponse(final ProtocolFrame response) throws PyDebuggerException {
super.processResponse(response);
final List<PyDebugValue> values = ProtocolParser.parseValues(response.getPayload(), myDebugProcess);
myFrameVariables = new XValueChildrenList(values.size());
for (PyDebugValue value : values) {
if (!value.getName().startsWith(RemoteDebugger.TEMP_VAR_PREFIX)) {
final PyDebugValue debugValue = extend(value);
myFrameVariables.add(debugValue.getName(), debugValue);
}
}
}
protected PyDebugValue extend(final PyDebugValue value) {
return new PyDebugValue(value.getName(), value.getType(), value.getValue(), value.isContainer(), value.isErrorOnEval(), null, myDebugProcess);
}
public XValueChildrenList getVariables() {
return myFrameVariables;
}
}