net.sourceforge.jtds.jdbc

Class ResponseStream


public class ResponseStream
extends java.lang.Object

Implements an input stream for the server response.

Implementation note:

  1. This class contains methods to read different types of data from the server response stream in TDS format.
  2. Character translation of String items is carried out.
Version:
$Id: ResponseStream.java,v 1.20 2005/10/27 13:22:33 alin_sinpalean Exp $
Author:
Mike Hutchinson.

Nested Class Summary

private static class
ResponseStream.TdsInputStream
Simple inner class implementing an InputStream over the server response.

Field Summary

private byte[]
buffer
The Input packet buffer.
private int
bufferLen
The length of current input packet.
private int
bufferPtr
The offset of the next byte to read.
private byte[]
byteBuffer
A shared byte buffer.
private char[]
charBuffer
A shared char buffer.
private boolean
isClosed
True if stream is closed.
private SharedSocket
socket
The shared network socket.
private int
streamId
The unique stream id.

Constructor Summary

ResponseStream(SharedSocket socket, int streamId, int bufferSize)
Constructs a RequestStream object.

Method Summary

(package private) void
close()
Closes this response stream.
(package private) InputStream
getInputStream(int len)
Creates a simple InputStream over the server response.
private void
getPacket()
Read the next TDS packet from the network.
(package private) int
getServerType()
Retrieves the server type.
(package private) int
getStreamId()
Retrieves the unique stream id.
(package private) int
getTdsVersion()
Retrieves the TDS version number.
(package private) int
peek()
Retrieves the next input byte without reading forward.
(package private) int
read()
Reads the next input byte from the server response stream.
(package private) int
read(byte[] b)
Reads a byte array from the server response stream.
(package private) int
read(byte[] b, int off, int len)
Reads a byte array from the server response stream, specifying a start offset and length.
(package private) int
read(char[] c)
Reads a char array from the server response stream.
(package private) int
readInt()
Reads an int value from the server response stream.
(package private) long
readLong()
Reads a long value from the server response stream.
(package private) String
readNonUnicodeString(int len)
Reads a non Unicode String from the server response stream, creating the String from a translated byte array.
(package private) String
readNonUnicodeString(int len, CharsetInfo charsetInfo)
Reads a String from the server response stream, translating it from a byte array using the specified character set.
(package private) short
readShort()
Reads a short value from the server response stream.
(package private) String
readString(int len)
Reads a String object from the server response stream.
(package private) String
readString(int len, CharsetInfo info)
Reads a String from the server response stream, creating it from a translated byte array.
(package private) String
readUnicodeString(int len)
Reads a UCS2-LE (Unicode) encoded String object from the server response stream.
(package private) BigDecimal
readUnsignedLong()
Reads an unsigned long value from the server response stream.
(package private) int
skip(int skip)
Discards bytes from the server response stream.
(package private) void
skipString(int len)
Skips a String from the server response stream.
(package private) void
skipToEnd()
Consumes the rest of the server response, without parsing it.

Field Details

buffer

private byte[] buffer
The Input packet buffer.

bufferLen

private int bufferLen
The length of current input packet.

bufferPtr

private int bufferPtr
The offset of the next byte to read.

byteBuffer

private final byte[] byteBuffer
A shared byte buffer.

charBuffer

private final char[] charBuffer
A shared char buffer.

isClosed

private boolean isClosed
True if stream is closed.

socket

private final SharedSocket socket
The shared network socket.

streamId

private final int streamId
The unique stream id.

Constructor Details

ResponseStream

(package private)  ResponseStream(SharedSocket socket,
                                  int streamId,
                                  int bufferSize)
Constructs a RequestStream object.
Parameters:
socket - the shared socket object to write to
streamId - the unique id for this stream (from ResponseStream)
bufferSize - the initial buffer size

Method Details

close

(package private)  void close()
Closes this response stream. The stream id is unlinked from the underlying shared socket as well.

getInputStream

(package private)  InputStream getInputStream(int len)
Creates a simple InputStream over the server response.

This method can be used to obtain a stream which can be passed to InputStreamReaders to assist in reading multi byte character sets.

Parameters:
len - the number of bytes available in the server response
Returns:
the InputStream built over the server response

getPacket

private void getPacket()
            throws IOException
Read the next TDS packet from the network.

getServerType

(package private)  int getServerType()
Retrieves the server type.
Returns:
the server type as an int

getStreamId

(package private)  int getStreamId()
Retrieves the unique stream id.
Returns:
the unique stream id as an int

getTdsVersion

(package private)  int getTdsVersion()
Retrieves the TDS version number.
Returns:
the TDS version as an int

peek

(package private)  int peek()
            throws IOException
Retrieves the next input byte without reading forward.
Returns:
the next byte in the input stream as an int

read

(package private)  int read()
            throws IOException
Reads the next input byte from the server response stream.
Returns:
the next byte in the input stream as an int

read

(package private)  int read(byte[] b)
            throws IOException
Reads a byte array from the server response stream.
Parameters:
b - the byte array to read into
Returns:
the number of bytes read as an int

read

(package private)  int read(byte[] b,
                            int off,
                            int len)
            throws IOException
Reads a byte array from the server response stream, specifying a start offset and length.
Parameters:
b - the byte array
off - the starting offset in the array
len - the number of bytes to read
Returns:
the number of bytes read as an int

read

(package private)  int read(char[] c)
            throws IOException
Reads a char array from the server response stream.
Parameters:
c - the char array
Returns:
the byte array as a byte[]

readInt

(package private)  int readInt()
            throws IOException
Reads an int value from the server response stream.
Returns:
the result as a int

readLong

(package private)  long readLong()
            throws IOException
Reads a long value from the server response stream.
Returns:
the result as a long

readNonUnicodeString

(package private)  String readNonUnicodeString(int len)
            throws IOException
Reads a non Unicode String from the server response stream, creating the String from a translated byte array.
Parameters:
len - the length of the string to read in bytes
Returns:
the result as a String

readNonUnicodeString

(package private)  String readNonUnicodeString(int len,
                                               CharsetInfo charsetInfo)
            throws IOException
Reads a String from the server response stream, translating it from a byte array using the specified character set.
Parameters:
len - the length of the string to read in bytes
Returns:
the result as a String

readShort

(package private)  short readShort()
            throws IOException
Reads a short value from the server response stream.
Returns:
the result as a short

readString

(package private)  String readString(int len)
            throws IOException
Reads a String object from the server response stream. If the TDS protocol version is 4.2 or 5.0 decode the string use the default server charset, otherwise use UCS2-LE (Unicode).
Parameters:
len - the length of the string to read in bytes in the case of TDS 4.2/5.0 and in characters for TDS 7.0+ (UCS2-LE encoded strings)
Returns:
the result as a String

readString

(package private)  String readString(int len,
                                     CharsetInfo info)
            throws IOException
Reads a String from the server response stream, creating it from a translated byte array.
Parameters:
len - the length of the string to read in bytes
info - descriptor of the charset to use
Returns:
the result as a String

readUnicodeString

(package private)  String readUnicodeString(int len)
            throws IOException
Reads a UCS2-LE (Unicode) encoded String object from the server response stream.
Parameters:
len - the length of the string to read in characters
Returns:
the result as a String

readUnsignedLong

(package private)  BigDecimal readUnsignedLong()
            throws IOException
Reads an unsigned long value from the server response stream.
Returns:
the result as a BigDecimal

skip

(package private)  int skip(int skip)
            throws IOException
Discards bytes from the server response stream.
Parameters:
skip - the number of bytes to discard
Returns:
the number of bytes skipped

skipString

(package private)  void skipString(int len)
            throws IOException
Skips a String from the server response stream. If the TDS protocol version is 4.2 or 5.0 len is the length in bytes, otherwise it's the length in UCS2-LE characters (length in bytes == 2 * len).
Parameters:
len - the length of the string to skip in bytes in the case of TDS 4.2/5.0 and in characters for TDS 7.0+ (UCS2-LE encoded strings)

skipToEnd

(package private)  void skipToEnd()
Consumes the rest of the server response, without parsing it.

Note: Use only in extreme cases, packets will not be parsed and could leave the connection in an inconsistent state.


Generated on June 12 2008