Package net.sourceforge.jtds.jdbc
Class ResponseStream
java.lang.Object
net.sourceforge.jtds.jdbc.ResponseStream
Implements an input stream for the server response.
Implementation note:
- This class contains methods to read different types of data from the server response stream in TDS format.
- 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
Nested ClassesModifier and TypeClassDescriptionprivate static classSimple inner class implementing anInputStreamover the server response. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SharedSocket.VirtualSocketTheSharedSocket.VirtualSocketused by this stream.private byte[]The Input packet buffer.private intThe length of current input packet.private intThe offset of the next byte to read.private final byte[]A shared byte buffer.private final char[]A shared char buffer.private booleanTrue if stream is closed.private final SharedSocketThe shared network socket. -
Constructor Summary
ConstructorsConstructorDescriptionResponseStream(SharedSocket socket, SharedSocket.VirtualSocket vsock, int bufferSize) Constructs aRequestStreamobject. -
Method Summary
Modifier and TypeMethodDescription(package private) voidclose()Closes this response stream.(package private) InputStreamgetInputStream(int len) Creates a simpleInputStreamover the server response.private voidRead the next TDS packet from the network.(package private) intRetrieves the server type.(package private) intRetrieves the TDS version number.(package private) SharedSocket.VirtualSocketRetrieves theSharedSocket.VirtualSocketused by this stream id.(package private) intpeek()Retrieves the next input byte without reading forward.(package private) intread()Reads the next input byte from the server response stream.(package private) intread(byte[] b) Reads a byte array from the server response stream.(package private) intread(byte[] b, int off, int len) Reads a byte array from the server response stream, specifying a start offset and length.(package private) intread(char[] c) Reads a char array from the server response stream.(package private) intreadInt()Reads anintvalue from the server response stream.(package private) longreadLong()Reads alongvalue from the server response stream.(package private) StringreadNonUnicodeString(int len) Reads a non UnicodeStringfrom the server response stream, creating theStringfrom a translatedbytearray.(package private) StringreadNonUnicodeString(int len, CharsetInfo charsetInfo) Reads aStringfrom the server response stream, translating it from abytearray using the specified character set.(package private) shortReads ashortvalue from the server response stream.(package private) StringreadString(int len) Reads aStringobject from the server response stream.(package private) StringreadString(int len, CharsetInfo info) Reads aStringfrom the server response stream, creating it from a translatedbytearray.(package private) StringreadUnicodeString(int len) Reads a UCS2-LE (Unicode) encoded String object from the server response stream.(package private) BigDecimalReads anunsigned longvalue from the server response stream.(package private) intskip(int skip) Discards bytes from the server response stream.(package private) voidskipString(int len) Skips aStringfrom the server response stream.(package private) voidConsumes the rest of the server response, without parsing it.
-
Field Details
-
socket
The shared network socket. -
buffer
private byte[] bufferThe Input packet buffer. -
bufferPtr
private int bufferPtrThe offset of the next byte to read. -
bufferLen
private int bufferLenThe length of current input packet. -
_VirtualSocket
TheSharedSocket.VirtualSocketused by this stream. -
isClosed
private boolean isClosedTrue if stream is closed. -
byteBuffer
private final byte[] byteBufferA shared byte buffer. -
charBuffer
private final char[] charBufferA shared char buffer.
-
-
Constructor Details
-
Method Details
-
getVirtualSocket
SharedSocket.VirtualSocket getVirtualSocket()Retrieves theSharedSocket.VirtualSocketused by this stream id.- Returns:
- the unique stream id as an
int
-
peek
Retrieves the next input byte without reading forward.- Returns:
- the next byte in the input stream as an
int - Throws:
IOException- if an I/O error occurs
-
read
Reads the next input byte from the server response stream.- Returns:
- the next byte in the input stream as an
int - Throws:
IOException- if an I/O error occurs
-
read
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 - Throws:
IOException- if an I/O error occurs
-
read
Reads a byte array from the server response stream, specifying a start offset and length.- Parameters:
b- the byte arrayoff- the starting offset in the arraylen- the number of bytes to read- Returns:
- the number of bytes read as an
int - Throws:
IOException- if an I/O error occurs
-
read
Reads a char array from the server response stream.- Parameters:
c- the char array- Returns:
- the byte array as a
byte[] - Throws:
IOException- if an I/O error occurs
-
readString
Reads aStringobject 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 - Throws:
IOException- if an I/O error occurs
-
skipString
Skips aStringfrom the server response stream. If the TDS protocol version is 4.2 or 5.0lenis 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)- Throws:
IOException- if an I/O error occurs
-
readUnicodeString
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 - Throws:
IOException- if an I/O error occurs
-
readNonUnicodeString
Reads a non UnicodeStringfrom the server response stream, creating theStringfrom a translatedbytearray.- Parameters:
len- the length of the string to read in bytes- Returns:
- the result as a
String - Throws:
IOException- if an I/O error occurs
-
readNonUnicodeString
Reads aStringfrom the server response stream, translating it from abytearray using the specified character set.- Parameters:
len- the length of the string to read in bytes- Returns:
- the result as a
String - Throws:
IOException- if an I/O error occurs
-
readString
Reads aStringfrom the server response stream, creating it from a translatedbytearray.- Parameters:
len- the length of the string to read in bytesinfo- descriptor of the charset to use- Returns:
- the result as a
String - Throws:
IOException- if an I/O error occurs
-
readShort
Reads ashortvalue from the server response stream.- Returns:
- the result as a
short - Throws:
IOException- if an I/O error occurs
-
readInt
Reads anintvalue from the server response stream.- Returns:
- the result as a
int - Throws:
IOException- if an I/O error occurs
-
readLong
Reads alongvalue from the server response stream.- Returns:
- the result as a
long - Throws:
IOException- if an I/O error occurs
-
readUnsignedLong
Reads anunsigned longvalue from the server response stream.- Returns:
- the result as a
BigDecimal - Throws:
IOException- if an I/O error occurs
-
skip
Discards bytes from the server response stream.- Parameters:
skip- the number of bytes to discard- Returns:
- the number of bytes skipped
- Throws:
IOException
-
skipToEnd
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. -
close
void close()Closes this response stream. The stream id is unlinked from the underlying shared socket as well. -
getTdsVersion
int getTdsVersion()Retrieves the TDS version number.- Returns:
- the TDS version as an
int
-
getServerType
int getServerType()Retrieves the server type.- Returns:
- the server type as an
int
-
getInputStream
Creates a simpleInputStreamover the server response. This method can be used to obtain a stream which can be passed toInputStreamReaders to assist in reading multi byte character sets.- Parameters:
len- the number of bytes available in the server response- Returns:
- the
InputStreambuilt over the server response
-
getPacket
Read the next TDS packet from the network.- Throws:
IOException- if an I/O error occurs
-