package com.intellij.lang.javascript.flex.debug;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
class DebuggerCommand {
private final String myText;
private final CommandOutputProcessingType myOutputProcessingType; // program will consume immediate server response (no infinite blocking allowed)
private final VMState myEndVMState;
private final VMState myStartVMState;
DebuggerCommand(@NotNull @NonNls String _text) { this(_text, CommandOutputProcessingType.NO_PROCESSING); }
DebuggerCommand(@NotNull @NonNls String _text, CommandOutputProcessingType outputProcessingType) {
this(_text, outputProcessingType, VMState.SUSPENDED, VMState.SUSPENDED);
}
DebuggerCommand(@NotNull @NonNls String _text, CommandOutputProcessingType outputProcessingType, VMState startState, VMState endState) {
myText = _text;
myOutputProcessingType = outputProcessingType;
myStartVMState = startState;
myEndVMState = endState;
}
@NotNull @NonNls String getText() { return myText; }
public CommandOutputProcessingType getOutputProcessingMode() {
return myOutputProcessingType;
}
public VMState getEndVMState() {
return myEndVMState;
}
public VMState getStartVMState() {
return myStartVMState;
}
CommandOutputProcessingMode onTextAvailable(@NonNls String s) {
assert myOutputProcessingType != CommandOutputProcessingType.NO_PROCESSING;
return CommandOutputProcessingMode.DONE;
}
@Override
public String toString() {
return getClass().getName();
}
public void post(final FlexDebugProcess flexDebugProcess) throws IOException {
flexDebugProcess.doSendCommandText(this);
}
public String read(FlexDebugProcess flexDebugProcess) throws IOException {
return flexDebugProcess.defaultReadCommand(this);
}
}