Package net.sourceforge.jtds.jdbc
Class RequestStream
- java.lang.Object
-
- net.sourceforge.jtds.jdbc.RequestStream
-
public class RequestStream extends java.lang.Object
Class to implement an output stream for the server request.Implementation note:
- This class contains methods to write different types of data to the server request stream in TDS format.
- Character translation of String items is carried out.
- Version:
- $Id: RequestStream.java,v 1.18 2005/09/21 21:50:34 ddkilzer Exp $
- Author:
- Mike Hutchinson.
-
-
Field Summary
Fields Modifier and Type Field Description private byte[]
buffer
The output packet buffer.private int
bufferPtr
The offset of the next byte to write.private int
bufferSize
The current output buffer sizeprivate boolean
isClosed
True if stream is closed.private int
maxPrecision
The maximum decimal precision.private byte
pktType
The request packet type.private SharedSocket
socket
The shared network socket.private int
streamId
The unique stream id.
-
Constructor Summary
Constructors Constructor Description RequestStream(SharedSocket socket, int streamId, int bufferSize, int maxPrecision)
Construct a RequestStream object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
close()
Close the output stream.(package private) void
flush()
Flush the packet to the output stream setting the last packet flag.(package private) int
getBufferSize()
Retrieve the current output packet size.(package private) byte
getMaxDecimalBytes()
Returns the maximum number of bytes required to output a decimal given the currentmaxPrecision
.(package private) int
getMaxPrecision()
Retrive the maximum decimal precision.(package private) int
getServerType()
Retrieve the Server type.(package private) int
getStreamId()
Retrieve the unique stream id.(package private) int
getTdsVersion()
Retrieve the TDS version number.private void
putPacket(int last)
Write the TDS packet to the network.(package private) void
setBufferSize(int size)
Set the output buffer size(package private) void
setPacketType(byte pktType)
Set the current output packet type.(package private) void
write(byte b)
Write a byte to the output stream.(package private) void
write(byte[] b)
Write an array of bytes to the output stream.(package private) void
write(byte[] b, int off, int len)
Write a partial byte buffer to the output stream.(package private) void
write(char[] s, int off, int len)
Write a char array object to the output stream.(package private) void
write(double f)
Write a double value to the output stream.(package private) void
write(float f)
Write a float value to the output stream.(package private) void
write(int i)
Write an int value to the output stream.(package private) void
write(long l)
Write a long value to the output stream.(package private) void
write(short s)
Write a short value to the output stream.(package private) void
write(java.lang.String s)
Write a String object to the output stream.(package private) void
write(java.math.BigDecimal value)
Write a BigDecimal value to the output stream.(package private) void
writeAscii(java.lang.String s)
Write a String to the output stream as translated bytes.(package private) void
writeReaderBytes(java.io.Reader in, int length)
Copy the contents of a Reader stream to the server as bytes.(package private) void
writeReaderChars(java.io.Reader in, int length)
Copy the contents of a Reader stream to the server.(package private) void
writeStreamBytes(java.io.InputStream in, int length)
Copy the contents of an InputStream to the server.
-
-
-
Field Detail
-
socket
private final SharedSocket socket
The shared network socket.
-
buffer
private byte[] buffer
The output packet buffer.
-
bufferPtr
private int bufferPtr
The offset of the next byte to write.
-
pktType
private byte pktType
The request packet type.
-
streamId
private final int streamId
The unique stream id.
-
isClosed
private boolean isClosed
True if stream is closed.
-
bufferSize
private int bufferSize
The current output buffer size
-
maxPrecision
private int maxPrecision
The maximum decimal precision.
-
-
Constructor Detail
-
RequestStream
RequestStream(SharedSocket socket, int streamId, int bufferSize, int maxPrecision)
Construct a RequestStream object.- Parameters:
socket
- the shared socket object to write tostreamId
- the unique id for this streambufferSize
- the initial buffer size to use (the current network packet size)maxPrecision
- the maximum precision for numeric/decimal types
-
-
Method Detail
-
setBufferSize
void setBufferSize(int size)
Set the output buffer size- Parameters:
size
- The new buffer size (>=TdsCore.MIN_PKT_SIZE
<=TdsCore.MAX_PKT_SIZE
).
-
getBufferSize
int getBufferSize()
Retrieve the current output packet size.- Returns:
- the packet size as an
int
.
-
getMaxPrecision
int getMaxPrecision()
Retrive the maximum decimal precision.- Returns:
- The precision as an
int
.
-
getMaxDecimalBytes
byte getMaxDecimalBytes()
Returns the maximum number of bytes required to output a decimal given the currentmaxPrecision
.- Returns:
- the maximum number of bytes required to output a decimal.
-
getStreamId
int getStreamId()
Retrieve the unique stream id.- Returns:
- the unique stream id as an
int
.
-
setPacketType
void setPacketType(byte pktType)
Set the current output packet type.- Parameters:
pktType
- The packet type eg TdsCore.QUERY_PKT.
-
write
void write(byte b) throws java.io.IOException
Write a byte to the output stream.- Parameters:
b
- The byte value to write.- Throws:
java.io.IOException
-
write
void write(byte[] b) throws java.io.IOException
Write an array of bytes to the output stream.- Parameters:
b
- The byte array to write.- Throws:
java.io.IOException
-
write
void write(byte[] b, int off, int len) throws java.io.IOException
Write a partial byte buffer to the output stream.- Parameters:
b
- The byte array buffer.off
- The offset into the byte array.len
- The number of bytes to write.- Throws:
java.io.IOException
-
write
void write(int i) throws java.io.IOException
Write an int value to the output stream.- Parameters:
i
- The int value to write.- Throws:
java.io.IOException
-
write
void write(short s) throws java.io.IOException
Write a short value to the output stream.- Parameters:
s
- The short value to write.- Throws:
java.io.IOException
-
write
void write(long l) throws java.io.IOException
Write a long value to the output stream.- Parameters:
l
- The long value to write.- Throws:
java.io.IOException
-
write
void write(double f) throws java.io.IOException
Write a double value to the output stream.- Parameters:
f
- The double value to write.- Throws:
java.io.IOException
-
write
void write(float f) throws java.io.IOException
Write a float value to the output stream.- Parameters:
f
- The float value to write.- Throws:
java.io.IOException
-
write
void write(java.lang.String s) throws java.io.IOException
Write a String object to the output stream. If the TDS version is >= 7.0 write a UNICODE string otherwise wrote a translated byte stream.- Parameters:
s
- The String to write.- Throws:
java.io.IOException
-
write
void write(char[] s, int off, int len) throws java.io.IOException
Write a char array object to the output stream.- Parameters:
s
- The char[] to write.- Throws:
java.io.IOException
-
writeAscii
void writeAscii(java.lang.String s) throws java.io.IOException
Write a String to the output stream as translated bytes.- Parameters:
s
- The String to write.- Throws:
java.io.IOException
-
writeStreamBytes
void writeStreamBytes(java.io.InputStream in, int length) throws java.io.IOException
Copy the contents of an InputStream to the server.- Parameters:
in
- The InputStream to read.length
- The length of the stream.- Throws:
java.io.IOException
-
writeReaderChars
void writeReaderChars(java.io.Reader in, int length) throws java.io.IOException
Copy the contents of a Reader stream to the server.- Parameters:
in
- The Reader object with the data.length
- The length of the data in characters.- Throws:
java.io.IOException
-
writeReaderBytes
void writeReaderBytes(java.io.Reader in, int length) throws java.io.IOException
Copy the contents of a Reader stream to the server as bytes.NB. Only reliable where the charset is single byte.
- Parameters:
in
- The Reader object with the data.length
- The length of the data in bytes.- Throws:
java.io.IOException
-
write
void write(java.math.BigDecimal value) throws java.io.IOException
Write a BigDecimal value to the output stream.- Parameters:
value
- The BigDecimal value to write.- Throws:
java.io.IOException
-
flush
void flush() throws java.io.IOException
Flush the packet to the output stream setting the last packet flag.- Throws:
java.io.IOException
-
close
void close()
Close the output stream.
-
getTdsVersion
int getTdsVersion()
Retrieve the TDS version number.- Returns:
- The TDS version as an
int
.
-
getServerType
int getServerType()
Retrieve the Server type.- Returns:
- The Server type as an
int
.
-
putPacket
private void putPacket(int last) throws java.io.IOException
Write the TDS packet to the network.- Parameters:
last
- Set to 1 if this is the last packet else 0.- Throws:
java.io.IOException
-
-