diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-16 01:27:14 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-16 01:27:14 +0000 |
| commit | a63c2657c94913d72b3cd388730d61edcb09fc69 (patch) | |
| tree | 8762d1f992e2f725a6bde1ff966ed6f1e5f4f823 /libjava/gnu/classpath/jdwp/transport | |
| parent | 6484dceb0094998183c2f8d3c8c27c6f4e53b8a9 (diff) | |
| download | ppe42-gcc-a63c2657c94913d72b3cd388730d61edcb09fc69.tar.gz ppe42-gcc-a63c2657c94913d72b3cd388730d61edcb09fc69.zip | |
Major merge with Classpath.
Removed many duplicate files.
* HACKING: Updated.x
* classpath: Imported new directory.
* standard.omit: New file.
* Makefile.in, aclocal.m4, configure: Rebuilt.
* sources.am: New file.
* configure.ac: Run Classpath configure script. Moved code around
to support. Disable xlib AWT peers (temporarily).
* Makefile.am (SUBDIRS): Added 'classpath'
(JAVAC): Removed.
(AM_CPPFLAGS): Added more -I options.
(BOOTCLASSPATH): Simplified.
Completely redid how sources are built.
Include sources.am.
* include/Makefile.am (tool_include__HEADERS): Removed jni.h.
* include/jni.h: Removed (in Classpath).
* scripts/classes.pl: Updated to look at built classes.
* scripts/makemake.tcl: New file.
* testsuite/libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Added
-I options.
(gcj_jni_invocation_compile_c_to_binary): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102082 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/classpath/jdwp/transport')
8 files changed, 0 insertions, 1307 deletions
diff --git a/libjava/gnu/classpath/jdwp/transport/ITransport.java b/libjava/gnu/classpath/jdwp/transport/ITransport.java deleted file mode 100644 index 371cf8f06af..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/ITransport.java +++ /dev/null @@ -1,84 +0,0 @@ -/* ITransport.java -- An interface defining JDWP transports - 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. */ - - -package gnu.classpath.jdwp.transport; - -import java.io.InputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.lang.IllegalArgumentException; -import java.util.HashMap; - -/** - * A class representing a transport layer. This class serves as a generic - * interface for all transport types used in the JDWP back-end. - * - * @author Keith Seitz <keiths@redhat.com> - */ -public interface ITransport -{ - /** - * Configure the transport with the given properties - * - * @param properties properties of the transport configuration - * @throws TransportException on configury error - */ - public void configure (HashMap properties) - throws TransportException; - - /** - * Initialize the transport - * - * @throws TransportException on initialization error - */ - public void initialize () - throws TransportException; - - /** - * Get the input stream for the transport - */ - public InputStream getInputStream () - throws IOException; - - /** - * Get the output stream for the transport - */ - public OutputStream getOutputStream () - throws IOException; -} diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.java b/libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.java deleted file mode 100644 index e99159aad9b..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/JdwpCommandPacket.java +++ /dev/null @@ -1,149 +0,0 @@ -/* JdwpCommandPacket.java -- JDWP command packet - 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. */ - - -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 - * information in {@link gnu.classpath.jdwp.transport.JdwpPacket} - * and adds additional command packet-specific processing. - * - * @author Keith Seitz <keiths@redhat.com> - */ -public class JdwpCommandPacket extends JdwpPacket -{ - /** - * Command set - */ - protected byte _commandSet; - - /** - * Command - */ - protected byte _command; - - // Minimum packet size [excluding super class] - // ( commandSet (1) + command (1) ) - private static final int MINIMUM_LENGTH = 2; - - /** - * Constructs a new <code>JdwpCommandPacket</code> - */ - public JdwpCommandPacket () - { - // Don't assign an id. This constructor is called by - // JdwpPacket.fromBytes, and that will assign a packet id. - } - - /** - * Constructs a new <code>JdwpCommandPacket</code> - * with the given command set and command - * - * @param set the command set - * @param command the command - */ - public JdwpCommandPacket (byte set, byte command) - { - _id = ++_last_id; - _commandSet = set; - _command = command; - } - - /** - * Retuns the length of this packet - */ - public int getLength () - { - return MINIMUM_LENGTH + super.getLength (); - } - - /** - * Returns the command set - */ - public byte getCommandSet () - { - return _commandSet; - } - - /** - * Sets the command set - */ - public void setCommandSet (byte cs) - { - _commandSet = cs; - } - - /** - * Returns the command - */ - public byte getCommand () - { - return _command; - } - - /** - * Sets the command - */ - public void setCommand (byte cmd) - { - _command = cmd; - } - - // Reads command packet data from the given buffer, starting - // at the given offset - protected int myFromBytes (byte[] bytes, int index) - { - int i = 0; - setCommandSet (bytes[index + i++]); - setCommand (bytes[index + i++]); - return i; - } - - // Writes the command packet data into the given buffer - protected void myWrite (DataOutputStream dos) - throws IOException - { - dos.writeByte (getCommandSet ()); - dos.writeByte (getCommand ()); - } -} diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpConnection.java b/libjava/gnu/classpath/jdwp/transport/JdwpConnection.java deleted file mode 100644 index 18250d3209b..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/JdwpConnection.java +++ /dev/null @@ -1,298 +0,0 @@ -/* JdwpConnection.java -- A JDWP-speaking connection - 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. */ - - -package gnu.classpath.jdwp.transport; - -import gnu.classpath.jdwp.Jdwp; -import gnu.classpath.jdwp.event.Event; -import gnu.classpath.jdwp.event.EventRequest; - -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; - -/** - * A connection via some transport to some JDWP-speaking entity. - * This is also a thread which handles all communications to/from - * the debugger. While access to the transport layer may be accessed by - * several threads, start-up and initialization should not be allowed - * to occur more than once. - * - * <p>This class is also a thread that is responsible for pulling - * packets off the wire and sticking them in a queue for packet - * processing threads. - * - * @author Keith Seitz (keiths@redhat.com) - */ -public class JdwpConnection - extends Thread -{ - // The JDWP handshake - private static final byte[] _HANDSHAKE = {'J', 'D', 'W', 'P', '-', 'H', 'a', - 'n', 'd', 's', 'h', 'a', 'k', 'e'}; - - // Transport method - private ITransport _transport; - - // Command queue - private ArrayList _commandQueue; - - // Shutdown flag - private boolean _shutdown; - - // Input stream from transport - private DataInputStream _inStream; - - // Output stream from transprot - private DataOutputStream _outStream; - - // A buffer used to construct the packet data - private ByteArrayOutputStream _bytes; - - // A DataOutputStream for the byte buffer - private DataOutputStream _doStream; - - /** - * Creates a new <code>JdwpConnection</code> instance - * - * @param transport the transport to use for communications - */ - public JdwpConnection (ITransport transport) - { - _transport = transport; - _commandQueue = new ArrayList (); - _shutdown = false; - _bytes = new ByteArrayOutputStream (); - _doStream = new DataOutputStream (_bytes); - } - - /** - * Initializes the connection, including connecting - * to socket or shared memory endpoint - * - * @throws TransportException if initialization fails - */ - public void initialize () - throws TransportException - { - // Initialize transport (connect socket, e.g.) - _transport.initialize (); - - // Do handshake - try - { - _inStream = new DataInputStream (_transport.getInputStream ()); - _outStream = new DataOutputStream (_transport.getOutputStream ()); - _doHandshake (); - } - catch (IOException ioe) - { - throw new TransportException (ioe); - } - } - - /* Does the JDWP handshake -- this should not need synchronization - because this is called by VM startup code, i.e., no packet - processing threads have started yet. */ - private void _doHandshake () - throws IOException - { - // According to the spec, the handshake is always initiated by - // the debugger, regardless of whether the JVM is in client mode or - // server mode. - - // Wait for handshake from debugger - byte[] hshake = new byte[_HANDSHAKE.length]; - _inStream.readFully (hshake, 0, _HANDSHAKE.length); - - if (Arrays.equals (hshake, _HANDSHAKE)) - { - // Send reply handshake - _outStream.write (_HANDSHAKE, 0, _HANDSHAKE.length); - return; - } - else - { - throw new IOException ("invalid JDWP handshake (\"" + hshake + "\")"); - } - } - - /** - * Main run method for the thread. This thread loops waiting for - * packets to be read via the connection. When a packet is complete - * and ready for processing, it places the packet in a queue that can - * be accessed via <code>getPacket</code> - */ - public void run () - { - while (!_shutdown) - { - try - { - _readOnePacket (); - } - catch (IOException ioe) - { - /* IOException can occur for two reasons: - 1. Lost connection with the other side - 2. Transport was shutdown - In either case, we make sure that all of the - back-end gets shutdown. */ - Jdwp.getInstance().shutdown (); - } - catch (Throwable t) - { - System.out.println ("JdwpConnection.run: caught an exception: " - + t); - // Just keep going - } - } - } - - // Reads a single packet from the connection, adding it to the packet - // queue when a complete packet is ready. - private void _readOnePacket () - throws IOException - { - byte[] data = null; - - // Read in the packet - int length = _inStream.readInt (); - if (length < 11) - { - throw new IOException ("JDWP packet length < 11 (" - + length + ")"); - } - - data = new byte[length]; - data[0] = (byte) (length >>> 24); - data[1] = (byte) (length >>> 16); - data[2] = (byte) (length >>> 8); - data[3] = (byte) length; - _inStream.readFully (data, 4, length - 4); - - JdwpPacket packet = JdwpPacket.fromBytes (data); - if (packet != null) - { - synchronized (_commandQueue) - { - _commandQueue.add (packet); - _commandQueue.notifyAll (); - } - } - } - - /** - * Returns a packet from the queue of ready packets - * - * @returns a <code>JdwpPacket</code> ready for processing - * <code>null</code> when shutting down - */ - public JdwpPacket getPacket () - { - synchronized (_commandQueue) - { - while (_commandQueue.isEmpty ()) - { - try - { - _commandQueue.wait (); - } - catch (InterruptedException ie) - { - /* PacketProcessor is interrupted - when shutting down */ - return null; - } - } - - return (JdwpPacket) _commandQueue.remove (0); - } - } - - /** - * Send a packet to the debugger - * - * @param pkt a <code>JdwpPacket</code> to send - * @throws IOException - */ - public void sendPacket (JdwpPacket pkt) - throws IOException - { - pkt.write (_outStream); - } - - /** - * Send an event notification to the debugger - * - * @param request the debugger request that wanted this event - * @param event the event - * @throws IOException - */ - public void sendEvent (EventRequest request, Event event) - throws IOException - { - JdwpPacket pkt; - - synchronized (_bytes) - { - _bytes.reset (); - pkt = event.toPacket (_doStream, request); - pkt.setData (_bytes.toByteArray ()); - } - - sendPacket (pkt); - } - - /** - * Shutdown the connection - */ - public void shutdown () - { - if (!_shutdown) - { - _transport.shutdown (); - _shutdown = true; - interrupt (); - } - } -} diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpPacket.java b/libjava/gnu/classpath/jdwp/transport/JdwpPacket.java deleted file mode 100644 index 7fa93e2de1b..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/JdwpPacket.java +++ /dev/null @@ -1,278 +0,0 @@ -/* 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. */ - - -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: - * - * 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 {@link - * gnu.classpath.jdwp.transport.JdwpCommandPacket} and {@link - * gnu.classpath.jdwp.transprot.JdwpReplyPacket}. - * - * @author Keith Seitz <keiths@redhat.com> - */ -public abstract class JdwpPacket -{ - // Last id of packet constructed - protected static int _last_id = 0; - - // JDWP reply packet flag - protected static final int JDWP_FLAG_REPLY = 0x80; - - /** - * Minimum packet size excluding sub-class data - * ( length (4) + id (4) + flags (1) ) - */ - protected static final int MINIMUM_SIZE = 9; - - /** - * Id of command/reply - */ - protected int _id; - - /** - * Packet flags - */ - protected byte _flags; - - /** - * Packet-specific data - */ - protected byte[] _data; - - /** - * Constructor - */ - public JdwpPacket () - { - // By default, DON'T assign an id. This way when a packet - // is constructed from fromBytes, _last_id won't increment (i.e., - // it won't leave holes in the outgoing packet ids). - } - - /** - * Constructs a <code>JdwpPacket</code> with the id - * from the given packet. - * - * @param pkt a packet whose id will be used in this new packet - */ - public JdwpPacket (JdwpPacket pkt) - { - _id = pkt.getId (); - } - - /** - * Returns the packet id - */ - public int getId () - { - return _id; - } - - /** - * Sets the packet id - */ - public void setId (int id) - { - _id = id; - } - - /** - * Returns the packet flags - */ - public byte getFlags () - { - return _flags; - } - - /** - * Sets the packet flags - */ - public void setFlags (byte flags) - { - _flags = flags; - } - - /** - * Gets the command/reply-specific data in this packet - */ - public byte[] getData () - { - return _data; - } - - /** - * Sets the command/reply-specific data in this packet - */ - public void setData (byte[] data) - { - _data = data; - } - - /** - * Returns the length of this entire packet - */ - public int getLength () - { - return MINIMUM_SIZE + (_data == null ? 0 : _data.length); - } - - /** - * Allow subclasses to initialize from data - * - * @param bytes packet data from the wire - * @param index index into <code>bytes</code> to start processing - * @return number of bytes in <code>bytes</code> processed - */ - protected abstract int myFromBytes (byte[] bytes, int index); - - /** - * Convert the given bytes into a <code>JdwpPacket</code>. Uses the - * abstract method <code>myFromBytes</code> to allow subclasses to - * process data. - * - * If the given data does not represent a valid JDWP packet, it returns - * <code>null</code>. - * - * @param bytes packet data from the wire - * @param index index into <code>bytes</code> to start processing - * @return number of bytes in <code>bytes</code> processed - */ - public static JdwpPacket fromBytes (byte[] bytes) - { - int i = 0; - int length = ((bytes[i++] & 0xff) << 24 | (bytes[i++] & 0xff) << 16 - | (bytes[i++] & 0xff) << 8 | (bytes[i++] & 0xff)); - int id = 0; - byte flags = 0; - - if (bytes.length == length) - { - id = ((bytes[i++] & 0xff) << 24 | (bytes[i++] & 0xff) << 16 - | (bytes[i++] & 0xff) << 8 | (bytes[i++] & 0xff)); - flags = bytes[i++]; - - Class clazz = null; - if (flags == 0) - clazz = JdwpCommandPacket.class; - else if ((flags & JDWP_FLAG_REPLY) != 0) - clazz = JdwpReplyPacket.class; - else - { - // Malformed packet. Discard it. - return null; - } - - JdwpPacket pkt = null; - try - { - pkt = (JdwpPacket) clazz.newInstance (); - } - catch (InstantiationException ie) - { - // Discard packet - return null; - } - catch (IllegalAccessException iae) - { - // Discard packet - return null; - } - - pkt.setId (id); - pkt.setFlags (flags); - - i += pkt.myFromBytes (bytes, i); - byte[] data = new byte[length - i]; - System.arraycopy (bytes, i, data, 0, data.length); - pkt.setData (data); - - return pkt; - } - - return null; - } - - /** - * Put subclass information onto the stream - * - * @param dos the output stream to which to write - */ - protected abstract void myWrite (DataOutputStream dos) - throws IOException; - - /** - * 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 - { - // length - int length = getLength (); - dos.writeInt (length); - - // ID - dos.writeInt (getId ()); - - // flag - dos.writeByte (getFlags ()); - - // packet-specific stuff - myWrite (dos); - - // data (if any) - byte[] data = getData (); - if (data != null && data.length > 0) - dos.write (data, 0, data.length); - } -} diff --git a/libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.java b/libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.java deleted file mode 100644 index de32ecf995b..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/JdwpReplyPacket.java +++ /dev/null @@ -1,137 +0,0 @@ -/* JdwpReplyPacket.java -- JDWP reply packet - 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. */ - - -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 - * in {@link gnu.classpath.transport.JdwpPacket} and adds additional - * reply packet-specific processing. - * - * @author Keith Seitz <keiths@redhat.com> - */ -public class JdwpReplyPacket extends JdwpPacket -{ - /** - * Error code - */ - protected short _errorCode; - - // Minimum packet size [excluding super class] ( errorCode (2) ) - private static final int MINIMUM_LENGTH = 2; - - /** - * Constructs a <code>JdwpReplyPacket</code>. - */ - public JdwpReplyPacket () - { - // Don't assign a packet id. This is called by JdwpPacket.fromBytes - // which assigns a packet id. (Not that a VM would do that...) - } - - /** - * Constructs a <code>JdwpReplyPacket</code> with the - * id from the given packet and error code - * - * @param pkt the packet whose id this packet will use - * @param errorCode the error code - */ - public JdwpReplyPacket (JdwpPacket pkt, short errorCode) - { - this(pkt); - _errorCode = errorCode; - } - - /** - * Constructs a <code>JdwpReplyPacket</code> with the - * id from the given packet and an empty error code - * - * @param pkt the packet whose id this packet will use - */ - public JdwpReplyPacket (JdwpPacket pkt) - { - super (pkt); - _flags = (byte) JDWP_FLAG_REPLY; - } - - /** - * Returns the length of this packet - */ - public int getLength () - { - return MINIMUM_LENGTH + super.getLength (); - } - - /** - * Returns the error code - */ - public short getErrorCode () - { - return _errorCode; - } - - /** - * Sets the error code - */ - public void setErrorCode (short ec) - { - _errorCode = ec; - } - - // Reads command packet data from the given buffer, starting - // at the given offset - protected int myFromBytes (byte[] bytes, int index) - { - int i = 0; - setErrorCode ((short) ((bytes[index + i++] & 0xff) << 8 - | (bytes[index + i++] & 0xff))); - return i; - } - - // Writes the command packet data into the given buffer - protected void myWrite (DataOutputStream dos) - throws IOException - { - dos.writeShort (getErrorCode ()); - } -} diff --git a/libjava/gnu/classpath/jdwp/transport/SocketTransport.java b/libjava/gnu/classpath/jdwp/transport/SocketTransport.java deleted file mode 100644 index 0ad7357e183..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/SocketTransport.java +++ /dev/null @@ -1,171 +0,0 @@ -/* SocketTransport.java -- a socket transport - 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. */ - - -package gnu.classpath.jdwp.transport; - -import gnu.classpath.jdwp.transport.ITransport; -import gnu.classpath.jdwp.transport.TransportException; - -import java.io.InputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.net.ServerSocket; -import java.net.Socket; -import java.util.HashMap; - -import javax.net.ServerSocketFactory; -import javax.net.SocketFactory; - -/** - * A socket-based transport. This transport uses - * configury string that looks like "name=dt_socket, - * address=localhost:1234,server=y". - * - * @author Keith Seitz <keiths@redhat.com> - */ -class SocketTransport - implements ITransport -{ - /** - * Name of this transport - */ - public static final String NAME = "dt_socket"; - - // Configure properties - private static final String _PROPERTY_ADDRESS = "address"; - private static final String _PROPERTY_SERVER = "server"; - - // Port number - private int _port; - - // Host name - private String _host; - - // Are we acting as a server? - private boolean _server = false; - - // Socket - private Socket _socket; - - /** - * Setup the connection configuration from the given properties - * - * @param properties the properties of the JDWP session - * @throws TransportException for any configury errors - */ - public void configure (HashMap properties) - throws TransportException - { - // Get address [form: "hostname:port"] - String p = (String) properties.get (_PROPERTY_ADDRESS); - if (p != null) - { - String[] s = p.split (":"); - if (s.length == 2) - { - _host = s[0]; - _port = Integer.parseInt (s[1]); - } - } - - // Get server [form: "y" or "n"] - p = (String) properties.get (_PROPERTY_SERVER); - if (p != null) - { - if (p.toLowerCase().equals ("y")) - _server = true; - } - } - - /** - * Initialize this socket connection. This includes - * connecting to the host (or listening for it). - * - * @throws TransportException if a transport-related error occurs - */ - public void initialize () - throws TransportException - { - try - { - if (_server) - { - // Get a server socket - ServerSocketFactory ssf = ServerSocketFactory.getDefault (); - ServerSocket ss = ssf.createServerSocket (_port, 1); - _socket = ss.accept (); - } - else - { - // Get a client socket (the factory will connect it) - SocketFactory sf = SocketFactory.getDefault (); - _socket = sf.createSocket (_host, _port); - } - } - catch (IOException ioe) - { - // This will grab UnknownHostException, too. - throw new TransportException (ioe); - } - } - - /** - * Returns an <code>InputStream</code> for the transport - * - * @throws IOException if an I/O error occurs creating the stream - * or the socket is not connected - */ - public InputStream getInputStream () - throws IOException - { - return _socket.getInputStream (); - } - - /** - * Returns an <code>OutputStream</code> for the transport - * - * @throws IOException if an I/O error occurs creating the stream - * or the socket is not connected - */ - public OutputStream getOutputStream () - throws IOException - { - return _socket.getOutputStream (); - } -} diff --git a/libjava/gnu/classpath/jdwp/transport/TransportException.java b/libjava/gnu/classpath/jdwp/transport/TransportException.java deleted file mode 100644 index 057422a879e..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/TransportException.java +++ /dev/null @@ -1,75 +0,0 @@ -/* TransportException.java -- Exception for transport configury errors - 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. */ - - -package gnu.classpath.jdwp.transport; - -/** - * A transport configury or initialization exception thrown by - * JDWP transports. This class is a generic exception class - * that the different transport layers use to report transport-specific - * exceptions that may occur (which could be very different from - * one transport to the next.). - * - * @author Keith Seitz <keiths@redhat.com> - */ -public class TransportException - extends Exception -{ - /** - * Constructs a <code>TransportException</code> with the - * given message - * - * @param message a message describing the exception - */ - public TransportException (String message) - { - super (message); - } - - /** - * Constructs a <code>TransportException</code> with the - * given <code>Throwable</code> root cause - * - * @param t the cause of the exception - */ - public TransportException (Throwable t) - { - super (t); - } -} diff --git a/libjava/gnu/classpath/jdwp/transport/TransportFactory.java b/libjava/gnu/classpath/jdwp/transport/TransportFactory.java deleted file mode 100644 index 480fb362939..00000000000 --- a/libjava/gnu/classpath/jdwp/transport/TransportFactory.java +++ /dev/null @@ -1,115 +0,0 @@ -/* TransportFactory.java -- Factory for transports - 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. */ - - -package gnu.classpath.jdwp.transport; - -import java.util.HashMap; - -/** - * A factory class that constructs transports for use by - * the JDWP back-end. - * - * @author Keith Seitz <keiths@redhat.com> - */ -public class TransportFactory -{ - // Keyword in configspec that specifies transport method - private static final String _TRANSPORT_PROPERTY = "transport"; - - // A single transport method mapping - private static class TransportMethod - { - String name; - Class clazz; - public TransportMethod (String name, Class clazz) - { - this.name = name; - this.clazz = clazz; - } - } - - // List of all supported transport methods - private static TransportMethod[] _transportMethods = new TransportMethod[] - { - new TransportMethod (SocketTransport.NAME, SocketTransport.class) - //new TransportMethod (ShmemTransport.NAME, ShmemTransport.class) - }; - - /** - * Get a transport configured as specified in the properties - * - * @param properties a <code>HashMap</code> specifying the JDWP - * configuration properties - * @returns the created and configured transport - * @throws TransportException for invalid configurations - */ - public static ITransport newInstance (HashMap properties) - throws TransportException - { - String name = null; - if (properties != null) - name = (String) properties.get (_TRANSPORT_PROPERTY); - if (name == null) - throw new TransportException ("no transport specified"); - - for (int i = 0; i < _transportMethods.length; ++i) - { - if (_transportMethods[i].name.equals (name)) - { - try - { - ITransport t; - t = (ITransport) _transportMethods[i].clazz.newInstance (); - t.configure (properties); - return t; - } - catch (TransportException te) - { - throw te; - } - catch (Exception e) - { - throw new TransportException (e); - } - } - } - - throw new TransportException ("transport \"" + name + "\" not found"); - } -} |

