iaik.security.ssl
Class SSLOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by iaik.security.ssl.SSLOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable

public class SSLOutputStream
extends java.io.OutputStream

This is the OutputStream which is returned by SSLTransport.getOutputStream. It is public to allow the application to control buffering.

To enable SSL/TLS layer buffering use code like for example:

 SSLSocket socket = new SSLSocket(...);
 SSLOutputStream out = (SSLOutputStream)socket.getOutputStream();
 out.setAutoFlush(false);
 // data written to out will now be buffered
 out.write(1);
 out.write(2);
 out.flush();
 

See Also:
setAutoFlush(boolean), SSLTransport.getOutputStream()

Constructor Summary
protected SSLOutputStream(SSLTransport s)
          Creates an SSLOutputStream for the given transport.
 
Method Summary
 void close()
          Closes this output stream and releases any system resources associated with this stream.
 void flush()
          Flushes this output stream and forces any buffered output bytes to be written out.
 boolean getAutoFlush()
          Get the autoflush value.
 void setAutoFlush(boolean value)
          Control the SSL layer buffering.
 void write(byte[] b)
          Writes b.length bytes from the specified byte array to this output stream.
 void write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this output stream.
 void write(int b)
          Writes the specified byte to this output stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SSLOutputStream

protected SSLOutputStream(SSLTransport s)
                   throws java.io.IOException
Creates an SSLOutputStream for the given transport.

Parameters:
s - the SSLTransport
Throws:
java.io.IOException - if the SSLOutputStream cannot be created
Method Detail

setAutoFlush

public void setAutoFlush(boolean value)
Control the SSL layer buffering. If set to true (the default) each write call will automatically cause a flush, i.e. an SSLMessage to be sent. If set to false data will be buffered and an SSLMessage will only be sent if the buffer is full (16k) or flush() is called. This will effectively save you the need for external buffering.

Note that buffering is only available when SSL is active, i.e. not before the handshake has been performed. Also note that you must call flush when autoflush is disabled to be sure data is sent.


getAutoFlush

public boolean getAutoFlush()
Get the autoflush value. True by default.


write

public void write(int b)
           throws java.io.IOException
Writes the specified byte to this output stream.

Specified by:
write in class java.io.OutputStream
Parameters:
b - the byte.
Throws:
java.io.IOException - if an I/O error occurs.

write

public void write(byte[] b)
           throws java.io.IOException
Writes b.length bytes from the specified byte array to this output stream.

Overrides:
write in class java.io.OutputStream
Parameters:
b - the data.
Throws:
java.io.IOException - if an I/O error occurs.

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Writes len bytes from the specified byte array starting at offset off to this output stream.

Overrides:
write in class java.io.OutputStream
Parameters:
b - the data.
off - the start offset in the data.
len - the number of bytes to write.
Throws:
java.io.IOException - if an I/O error occurs.

flush

public void flush()
           throws java.io.IOException
Flushes this output stream and forces any buffered output bytes to be written out.

Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.OutputStream
Throws:
java.io.IOException - if an I/O error occurs.

close

public void close()
           throws java.io.IOException
Closes this output stream and releases any system resources associated with this stream. A close_notify alert is also sent to inform the peer that everything worked well and that he also could cache this session.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.OutputStream
Throws:
java.io.IOException - if an I/O error occurs

This Javadoc may contain text parts from text parts from IETF Internet Standard specifications (see copyright note).

iSaSiLk 6.0, (c) 2002 IAIK, (c) 2003 - 2015 SIC