gnu.classpath.jdwp.transport

Class JdwpPacket

Known Direct Subclasses:
JdwpCommandPacket, JdwpReplyPacket

public abstract class JdwpPacket
extends Object

All command and reply packets in JDWP share common header type information: length (4 bytes) : size of entire packet, including length id (4 bytes) : unique packet id flags (1 byte) : flag byte [command packet stuff | reply packet stuff] data (variable) : unique command-/reply-specific data This class deal with everything except the command- and reply-specific data, which get handled in JdwpCommandPacket and JdwpReplyPacket.

Field Summary

protected static int
JDWP_FLAG_REPLY
protected static int
MINIMUM_SIZE
Minimum packet size excluding sub-class data ( length (4) + id (4) + flags (1) )
protected byte[]
_data
Packet-specific data
protected byte
_flags
Packet flags
protected int
_id
Id of command/reply
protected static int
_last_id

Constructor Summary

JdwpPacket()
Constructor
JdwpPacket(JdwpPacket pkt)
Constructs a JdwpPacket with the id from the given packet.

Method Summary

static JdwpPacket
fromBytes(byte[] bytes)
Convert the given bytes into a JdwpPacket.
byte[]
getData()
Gets the command/reply-specific data in this packet
byte
getFlags()
Returns the packet flags
int
getId()
Returns the packet id
int
getLength()
Returns the length of this entire packet
protected abstract int
myFromBytes(byte[] bytes, int index)
Allow subclasses to initialize from data
protected abstract void
myWrite(DataOutputStream dos)
Put subclass information onto the stream
void
setData(byte[] data)
Sets the command/reply-specific data in this packet
void
setFlags(byte flags)
Sets the packet flags
void
setId(int id)
Sets the packet id
void
write(DataOutputStream dos)
Writes the packet to the output stream

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

JDWP_FLAG_REPLY

protected static final int JDWP_FLAG_REPLY
Field Value:
128

MINIMUM_SIZE

protected static final int MINIMUM_SIZE
Minimum packet size excluding sub-class data ( length (4) + id (4) + flags (1) )
Field Value:
9

_data

protected byte[] _data
Packet-specific data

_flags

protected byte _flags
Packet flags

_id

protected int _id
Id of command/reply

_last_id

protected static int _last_id

Constructor Details

JdwpPacket

public JdwpPacket()
Constructor

JdwpPacket

public JdwpPacket(JdwpPacket pkt)
Constructs a JdwpPacket with the id from the given packet.
Parameters:
pkt - a packet whose id will be used in this new packet

Method Details

fromBytes

public static JdwpPacket fromBytes(byte[] bytes)
Convert the given bytes into a JdwpPacket. Uses the abstract method myFromBytes to allow subclasses to process data. If the given data does not represent a valid JDWP packet, it returns null.
Parameters:
bytes - packet data from the wire
Returns:
number of bytes in bytes processed

getData

public byte[] getData()
Gets the command/reply-specific data in this packet

getFlags

public byte getFlags()
Returns the packet flags

getId

public int getId()
Returns the packet id

getLength

public int getLength()
Returns the length of this entire packet

myFromBytes

protected abstract int myFromBytes(byte[] bytes,
                                   int index)
Allow subclasses to initialize from data
Parameters:
bytes - packet data from the wire
index - index into bytes to start processing
Returns:
number of bytes in bytes processed

myWrite

protected abstract void myWrite(DataOutputStream dos)
            throws IOException
Put subclass information onto the stream
Parameters:
dos - the output stream to which to write

setData

public void setData(byte[] data)
Sets the command/reply-specific data in this packet

setFlags

public void setFlags(byte flags)
Sets the packet flags

setId

public void setId(int id)
Sets the packet id

write

public void write(DataOutputStream dos)
            throws IOException
Writes the packet to the output stream
Parameters:
dos - the output stream to which to write the packet

JdwpPacket.java -- Base class for JDWP command and reply packets Copyright (C) 2005 Free Software Foundation This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.