net.sourceforge.jtds.jdbc
Class RequestStream

java.lang.Object
  extended bynet.sourceforge.jtds.jdbc.RequestStream

public class RequestStream
extends java.lang.Object

Class to implement an output stream for the server request.

Implementation note:

  1. This class contains methods to write different types of data to the server request stream in TDS format.
  2. 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
private  SharedSocket.VirtualSocket _VirtualSocket
          The unique stream id.
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 size
private  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.
 
Constructor Summary
(package private) RequestStream(SharedSocket socket, SharedSocket.VirtualSocket vsock, int bufferSize, int maxPrecision)
          Construct a RequestStream object.
 
Method Summary
(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 current maxPrecision.
(package private)  int getMaxPrecision()
          Retrive the maximum decimal precision.
(package private)  int getServerType()
          Retrieve the Server type.
(package private)  int getTdsVersion()
          Retrieve the TDS version number.
(package private)  SharedSocket.VirtualSocket getVirtualSocket()
          Retrieve the VirtualSocket used by this stream.
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(java.math.BigDecimal value)
          Write a BigDecimal value to the output stream.
(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 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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.


_VirtualSocket

private final SharedSocket.VirtualSocket _VirtualSocket
The unique stream id.


isClosed

private boolean isClosed
True if stream is closed.


bufferSize

private final int bufferSize
The current output buffer size


maxPrecision

private final int maxPrecision
The maximum decimal precision.

Constructor Detail

RequestStream

RequestStream(SharedSocket socket,
              SharedSocket.VirtualSocket vsock,
              int bufferSize,
              int maxPrecision)
Construct a RequestStream object.

Parameters:
socket - the shared socket object to write to
vsock - the VirtualSocket used by this stream
bufferSize - 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 current maxPrecision.

Returns:
the maximum number of bytes required to output a decimal.

getVirtualSocket

SharedSocket.VirtualSocket getVirtualSocket()
Retrieve the VirtualSocket used by this stream.

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


Generated on October 27 2012