RequestStream (jTDS API)
Date: 2013-06-08

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:

  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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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

    Constructors
    Constructor and Description
    `RequestStream(SharedSocket socket, SharedSocket.VirtualSocket vsock, int bufferSize, int maxPrecision)` Construct a RequestStream object.

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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 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 `SharedSocket.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 `SharedSocket.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 `SharedSocket.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 June 8 2013