2005-06-30 Keith Seitz <keiths@redhat.com>
+ * gnu/classpath/jdwp/transport/JdwpPacket.java (write): New method.
+ (myWrite): New abstract method.
+ (toBytes): Remove.
+ (myToBytes): Remove.
+ * gnu/classpath/jdwp/transport/JdwpReplyPacket.java (myWrite): New
+ method.
+ * gnu/classpath/jdwp/transport/JdwpCommandPacket.java (myWrite): New
+ method.
+ * gnu/classpath/jdwp/transport/JdwpConnection.java (sendPacket): Use
+ JdwpPacket.write instead of JdwpPacket.toBytes.
+
+2005-06-30 Keith Seitz <keiths@redhat.com>
+
* gnu/classpath/jdwp/transport/JdwpConnection.java (sendEvent): New
method.
(_bytes): New member.
package gnu.classpath.jdwp.transport;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
/**
* A class representing a JDWP command packet.
* This class adds command set and command to the packet header
}
// Writes the command packet data into the given buffer
- protected int myToBytes (byte[] bytes, int index)
+ protected void myWrite (DataOutputStream dos)
+ throws IOException
{
- // Need to add command set & command
- int i = 0;
- bytes[index + i++] = getCommandSet ();
- bytes[index + i++] = getCommand ();
-
- return i;
+ dos.writeByte (getCommandSet ());
+ dos.writeByte (getCommand ());
}
}
package gnu.classpath.jdwp.transport;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
/**
* All command and reply packets in JDWP share
* common header type information:
return null;
}
- // Put subclass information into bytes
- protected abstract int myToBytes (byte[] bytes, int index);
+ /**
+ * Put subclass information onto the stream
+ *
+ * @param dos the output stream to which to write
+ */
+ protected abstract void myWrite (DataOutputStream dos)
+ throws IOException;
- // Convert this packet to it byte representation (ready to send on the wire)
- // NOTE: All integers should be big-endian.
- public byte[] toBytes ()
+ /**
+ * Writes the packet to the output stream
+ *
+ * @param dos the output stream to which to write the packet
+ */
+ public void write (DataOutputStream dos)
+ throws IOException
{
- // Allocate a new array to hold contents of packet
- int length = getLength ();
- byte[] bytes = new byte[length];
-
- int i = 0;
-
- //
- // Packet layout: length, id, flags, packet-specific, data (optional)
- //
-
// length
- bytes[i++] = (byte) (length >>> 24);
- bytes[i++] = (byte) (length >>> 16);
- bytes[i++] = (byte) (length >>> 8);
- bytes[i++] = (byte) length;
+ int length = getLength ();
+ dos.writeInt (length);
- // id
- bytes[i++] = (byte) (getId () >>> 24);
- bytes[i++] = (byte) (getId () >>> 16);
- bytes[i++] = (byte) (getId () >>> 8);
- bytes[i++] = (byte) getId ();
+ // ID
+ dos.writeInt (getId ());
// flag
- bytes[i++] = getFlags ();
+ dos.writeByte (getFlags ());
// packet-specific stuff
- i += myToBytes (bytes, i);
+ myWrite (dos);
// data (if any)
byte[] data = getData ();
- if (data.length > 0 && i < length)
- {
- // Would it pay to be over cautious?
- System.arraycopy (data, 0, bytes, i, data.length);
- }
-
- return bytes;
+ if (data != null && data.length > 0)
+ dos.write (data, 0, data.length);
}
}
package gnu.classpath.jdwp.transport;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
/**
* A class represents a JDWP reply packet.
* This class adds an error code to the packet header information
}
// Writes the command packet data into the given buffer
- protected int myToBytes (byte[] bytes, int index)
- {
- // Need to add error code
- int i = 0;
- bytes[index + i++] = (byte) (getErrorCode () >>> 8);
- bytes[index + i++] = (byte) getErrorCode ();
-
- return i;
+ protected void myWrite (DataOutputStream dos)
+ throws IOException
+ {
+ dos.writeShort (getErrorCode ());
}
}