Class TdsTlsInputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    class TdsTlsInputStream
    extends java.io.FilterInputStream
    An input stream that filters out TDS headers so they are not returned to JSSE (which will not recognize them).
    Version:
    $Id: TdsTlsInputStream.java,v 1.5 2005/10/20 09:46:38 alin_sinpalean Exp $
    Author:
    Rob Worsnop, Mike Hutchinson
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) java.io.InputStream bufferStream  
      (package private) int bytesOutstanding  
      (package private) boolean pureSSL
      False if TLS packets are encapsulated in TDS packets.
      (package private) byte[] readBuffer
      Temporary buffer used to de-encapsulate inital TLS packets.
      • Fields inherited from class java.io.FilterInputStream

        in
    • Constructor Summary

      Constructors 
      Constructor Description
      TdsTlsInputStream​(java.io.InputStream in)
      Constructs a TdsTlsInputStream and bases it on an underlying stream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void primeBuffer()
      Read in entire TLS record or TDS packet and store the TLS record in the buffer.
      int read​(byte[] b, int off, int len)  
      private void readFully​(byte[] b, int off, int len)
      Reads len bytes or throws an IOException if there aren't that many bytes available.
      • Methods inherited from class java.io.FilterInputStream

        available, close, mark, markSupported, read, read, reset, skip
      • Methods inherited from class java.io.InputStream

        nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • bytesOutstanding

        int bytesOutstanding
      • readBuffer

        final byte[] readBuffer
        Temporary buffer used to de-encapsulate inital TLS packets. Initial size should be enough for login phase after which no buffering is required.
      • bufferStream

        java.io.InputStream bufferStream
      • pureSSL

        boolean pureSSL
        False if TLS packets are encapsulated in TDS packets.
    • Constructor Detail

      • TdsTlsInputStream

        public TdsTlsInputStream​(java.io.InputStream in)
        Constructs a TdsTlsInputStream and bases it on an underlying stream.
        Parameters:
        in - the underlying stream
    • Method Detail

      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • primeBuffer

        private void primeBuffer()
                          throws java.io.IOException
        Read in entire TLS record or TDS packet and store the TLS record in the buffer. (TDS packets will always contain a TLS record.)
        Throws:
        java.io.IOException
      • readFully

        private void readFully​(byte[] b,
                               int off,
                               int len)
                        throws java.io.IOException
        Reads len bytes or throws an IOException if there aren't that many bytes available.
        Parameters:
        b - buffer to read into
        off - offset in the buffer where to start storing
        len - amount of data to read
        Throws:
        java.io.IOException - if an I/O error occurs or not enough data is available