JdwpPacket.java (write): New method.
authorKeith Seitz <keiths@redhat.com>
Thu, 30 Jun 2005 18:05:10 +0000 (18:05 +0000)
committerKeith Seitz <kseitz@gcc.gnu.org>
Thu, 30 Jun 2005 18:05:10 +0000 (18:05 +0000)
        * 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.

From-SVN: r101472

libjava/ChangeLog
libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.java
libjava/gnu/classpath/jdwp/transport/JdwpConnection.java
libjava/gnu/classpath/jdwp/transport/JdwpPacket.java
libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.java

index 29dcb15654d1623c4af59264383d817698c12cf3..3fec4a04a5ebdaf0077adab097d7fa3d589bffcd 100644 (file)
@@ -1,3 +1,16 @@
+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
index dc4b15f8512b4ba59de416848b413a54dad9f743..e99159aad9b469b3e94e5e021c6aec90d19f7aeb 100644 (file)
@@ -39,6 +39,9 @@ exception statement from your version. */
 
 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
@@ -137,13 +140,10 @@ public class JdwpCommandPacket extends JdwpPacket
   }
 
   // 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 ());
   }
 }
index ffc8a17673885c904b80a35d47115981ed33a863..18250d3209b7e4dff96c06c64fa2441a35557ad5 100644 (file)
@@ -258,8 +258,7 @@ public class JdwpConnection
   public void sendPacket (JdwpPacket pkt)
     throws IOException
   {
-    byte[] data = pkt.toBytes ();
-    _outStream.write (data, 0, data.length);
+    pkt.write (_outStream);
   }
 
   /**
index 485aa403da711f7d8e60b07573513ecb1a698079..7fa93e2de1b3ad8256aff3a7d27025a7b97c73c5 100644 (file)
@@ -39,6 +39,9 @@ exception statement from your version. */
 
 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:
@@ -238,49 +241,38 @@ public abstract class JdwpPacket
     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);
   }
 }
index ad4e07d9faf53ce89e790bbdf5f9c0836197f5f7..06d1aff7a74efe704c69e859ff0c420463d513ed 100644 (file)
@@ -39,6 +39,9 @@ exception statement from your version. */
 
 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
@@ -115,13 +118,9 @@ public class JdwpReplyPacket extends JdwpPacket
   }
 
   // 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 ());
   }
 }