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

net.sourceforge.jtds.ssl

## Class TdsTlsOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - java.io.FilterOutputStream
    - - net.sourceforge.jtds.ssl.TdsTlsOutputStream

- All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

       class TdsTlsOutputStream
      extends java.io.FilterOutputStream

  An output stream that mediates between JSSE and the DB server.

  SQL Server 2000 has the following requirements:
  - All handshake records are delivered in TDS packets.
  - The "Client Key Exchange" (CKE), "Change Cipher Spec" (CCS) and "Finished" (FIN) messages are to be submitted in the delivered in both the same TDS packet and the same TCP packet.
  - From then on TLS/SSL records should be transmitted as normal -- the TDS packet is part of the encrypted application data.
  Version:
    $Id: TdsTlsOutputStream.java,v 1.4 2005-04-28 14:29:31 alin_sinpalean Exp $
  Author:
    Rob Worsnop, Mike Hutchinson

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.util.List` | `bufferedRecords` Used for holding back CKE, CCS and FIN records.
    `private int` | `totalSize`

    - ### Fields inherited from class java.io.FilterOutputStream

      `out`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TdsTlsOutputStream(java.io.OutputStream out)` Constructs a TdsTlsOutputStream based on an underlying output stream.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private void` | `deferRecord(byte[] record, int len)` Holds back a record for batched transmission.
    `void` | `flush()`
    `private void` | `flushBufferedRecords()` Transmits the buffered batch of records.
    `(package private) void` | `putTdsPacket(byte[] b, int len)` Write a TDS packet containing the TLS record(s).
    `void` | `write(byte[] b, int off, int len)`

    - ### Methods inherited from class java.io.FilterOutputStream

      `close, write, write`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### bufferedRecords

          private final java.util.List bufferedRecords

      Used for holding back CKE, CCS and FIN records.

    - #### totalSize

          private int totalSize

  - ### Constructor Detail

    - #### TdsTlsOutputStream

          TdsTlsOutputStream(java.io.OutputStream out)

      Constructs a TdsTlsOutputStream based on an underlying output stream.
      Parameters:
        `out` - the underlying output stream

  - ### Method Detail

    - #### deferRecord

          private void deferRecord(byte[] record,
                         int len)

      Holds back a record for batched transmission.
      Parameters:
        `record` - the TLS record to buffer
        `len` - the length of the TLS record to buffer

    - #### flushBufferedRecords

          private void flushBufferedRecords()
                                     throws java.io.IOException

      Transmits the buffered batch of records.
      Throws:
        `java.io.IOException`

    - #### write

          public void write(byte[] b,
                   int off,
                   int len)
                     throws java.io.IOException

      Overrides:
        `write` in class `java.io.FilterOutputStream`
      Throws:
        `java.io.IOException`

    - #### putTdsPacket

          void putTdsPacket(byte[] b,
                          int len)
                      throws java.io.IOException

      Write a TDS packet containing the TLS record(s).
      Parameters:
        `b` - the TLS record
        `len` - the length of the TLS record
      Throws:
        `java.io.IOException`

    - #### flush

          public void flush()
                     throws java.io.IOException

      Specified by:
        `flush` in interface `java.io.Flushable`
      Overrides:
        `flush` in class `java.io.FilterOutputStream`
      Throws:
        `java.io.IOException`

Generated on June 8 2013