Package 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 Description private java.util.List
bufferedRecords
Used for holding back CKE, CCS and FIN records.private int
totalSize
-
Constructor Summary
Constructors Constructor Description TdsTlsOutputStream(java.io.OutputStream out)
Constructs a TdsTlsOutputStream based on an underlying output stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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)
-
-
-
Method Detail
-
deferRecord
private void deferRecord(byte[] record, int len)
Holds back a record for batched transmission.- Parameters:
record
- the TLS record to bufferlen
- 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 classjava.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 recordlen
- the length of the TLS record- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException
- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
-
-