Class 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 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 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.
      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 current maxPrecision.
      (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.
      • 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.
      • 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 to
        streamId - the unique id for this stream
        bufferSize - the initial buffer size to use (the current network packet size)
        maxPrecision - the maximum precision for numeric/decimal types
    • Method Detail

      • 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.
      • 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