Top Fields Constructors Methods
com.sun.tools.jdi

pack-priv Class SocketConnection

extends Connection
Class Inheritance
Imports
java.io.IOException, .InputStream, .OutputStream, java.net.Socket, com.sun.jdi.connect.spi.ClosedConnectionException, .Connection

Field Summary

Modifier and TypeField and Description
private boolean
private Object
private Object
private Object
private Socket
private InputStream
private OutputStream

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
public void
close()

Implements abstract com.sun.jdi.connect.spi.Connection.close.

Closes this connection.
public boolean
isOpen()

Implements abstract com.sun.jdi.connect.spi.Connection.isOpen.

Tells whether or not this connection is open.
public byte[]
readPacket()

Implements abstract com.sun.jdi.connect.spi.Connection.readPacket.

Reads a packet from the target VM.
public void
writePacket(byte[]
The packet to write to the target VM.
b
)

Implements abstract com.sun.jdi.connect.spi.Connection.writePacket.

Writes a packet to the target VM.

Field Detail

closedback to summary
private boolean closed
closeLockback to summary
private Object closeLock
receiveLockback to summary
private Object receiveLock
sendLockback to summary
private Object sendLock
socketback to summary
private Socket socket
socketInputback to summary
private InputStream socketInput
socketOutputback to summary
private OutputStream socketOutput

Constructor Detail

SocketConnectionback to summary
pack-priv SocketConnection(Socket socket) throws IOException

Method Detail

closeback to summary
public void close() throws IOException

Implements abstract com.sun.jdi.connect.spi.Connection.close.

Doc from com.sun.jdi.connect.spi.Connection.close.

Closes this connection.

If the connection is already closed then invoking this method has no effect. After a connection is closed, any further attempt calls to readPacket or writePacket will throw a ClosedConnectionException.

Any thread currently blocked in an I/O operation (readPacket or writePacket) will throw a ClosedConnectionException).

This method may be invoked at any time. If some other thread has already invoked it, however, then another invocation will block until the first invocation is complete, after which it will return without effect.

Exceptions
IOException:
If an I/O error occurs
isOpenback to summary
public boolean isOpen()

Implements abstract com.sun.jdi.connect.spi.Connection.isOpen.

Doc from com.sun.jdi.connect.spi.Connection.isOpen.

Tells whether or not this connection is open.

Returns:boolean

true if and only if this connection is open

readPacketback to summary
public byte[] readPacket() throws IOException

Implements abstract com.sun.jdi.connect.spi.Connection.readPacket.

Doc from com.sun.jdi.connect.spi.Connection.readPacket.

Reads a packet from the target VM.

Attempts to read a JDWP packet from the target VM. A read operation may block indefinitely and only returns when it reads all bytes of a packet, or in the case of a transport service that is based on a stream-oriented communication protocol, the end of stream is encountered.

Reading a packet does not do any integrity checking on the packet aside from a check that the length of the packet (as indicated by the value of the length field, the first four bytes of the packet) is 11 or more bytes. If the value of the length value is less then 11 then an IOException is thrown.

Returns a byte array of a length equal to the length of the received packet, or a byte array of length 0 when an end of stream is encountered. If end of stream is encountered after some, but not all bytes of a packet, are read then it is considered an I/O error and an IOException is thrown. The first byte of the packet is stored in element 0 of the byte array, the second in element 1, and so on. The bytes in the byte array are laid out as per the JDWP specification. That is, all fields in the packet are in big endian order as per the JDWP specification.

This method may be invoked at any time. If another thread has already initiated a readPacket on this connection then the invocation of this method will block until the first operation is complete.

Returns:byte[]

the packet read from the target VM

Exceptions
IOException:
If the length of the packet (as indictaed by the first 4 bytes) is less than 11 bytes, or an I/O error occurs.
writePacketback to summary
public void writePacket(byte[] b) throws IOException

Implements abstract com.sun.jdi.connect.spi.Connection.writePacket.

Doc from com.sun.jdi.connect.spi.Connection.writePacket.

Writes a packet to the target VM.

Attempts to write, or send, a JDWP packet to the target VM. A write operation only returns after writing the entire packet to the target VM. Writing the entire packet does not mean the entire packet has been transmitted to the target VM but rather that all bytes have been written to the transport service. A transport service based on a TCP/IP connection may, for example, buffer some or all of the packet before transmission on the network.

The byte array provided to this method should be laid out as per the JDWP specification. That is, all fields in the packet are in big endian order. The first byte, that is element pkt[0], is the first byte of the length field. pkt[1] is the second byte of the length field, and so on.

Writing a packet does not do any integrity checking on the packet aside from checking the packet length. Checking the packet length requires checking that the value of the length field (as indicated by the first four bytes of the packet) is 11 or greater. Consequently the length of the byte array provided to this method, that is pkt.length, must be 11 or more, and must be equal or greater than the value of the length field. If the length of the byte array is greater than the value of the length field then all bytes from element pkt[length] onwards are ignored. In other words, any additional bytes that follow the packet in the byte array are ignored and will not be transmitted to the target VM.

A write operation may block or may complete immediately. The exact circumstances when an operation blocks depends on the transport service. In the case of a TCP/IP connection to the target VM, the writePacket method may block if there is network congestion or there is insufficient space to buffer the packet in the underlying network system.

This method may be invoked at any time. If another thread has already initiated a write operation upon this Connection then a subsequent invocation of this method will block until the first operation is complete.

Parameters
b:byte[]

The packet to write to the target VM.

Exceptions
IOException:
If an I/O error occurs.