blob: a60dadd87aeee5e15c06da4c70899c34d686f371 [file] [log] [blame]
package com.jetbrains.python.debugger.pydev;
import com.jetbrains.python.debugger.PyDebuggerException;
import org.jetbrains.annotations.NotNull;
import java.io.UnsupportedEncodingException;
public class ProtocolFrame {
private final int myCommand;
private final int mySequence;
private @NotNull final String myPayload;
public ProtocolFrame(final int command, final int sequence, @NotNull final String payload) throws PyDebuggerException {
myCommand = command;
mySequence = sequence;
myPayload = payload;
}
public ProtocolFrame(final String frame) throws PyDebuggerException {
final String[] parts = frame.split("\t", 3);
if (parts == null || parts.length < 2) {
throw new PyDebuggerException("Bad frame: " + frame);
}
myCommand = Integer.parseInt(parts[0]);
mySequence = Integer.parseInt(parts[1]);
myPayload = (parts.length == 3 && !"".equals(parts[2]) ? ProtocolParser.decode(parts[2]) : "");
}
public int getCommand() {
return myCommand;
}
public int getSequence() {
return mySequence;
}
@NotNull
public String getPayload() {
return myPayload;
}
@NotNull
public byte[] pack() throws UnsupportedEncodingException {
final StringBuilder sb = new StringBuilder();
sb.append(Integer.toString(myCommand));
sb.append('\t');
sb.append(Integer.toString(mySequence));
sb.append('\t');
sb.append(myPayload);
sb.append('\n');
return sb.toString().getBytes("UTF-8");
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append('[');
sb.append(Integer.toString(myCommand));
sb.append(':');
sb.append(Integer.toString(mySequence));
sb.append(':');
sb.append(myPayload);
sb.append(']');
return sb.toString();
}
}