Class XdrOutputStream

All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public final class XdrOutputStream extends BufferedOutputStream
An XdrOutputStream writes data in XDR format to an underlying java.io.OutputStream.

This class is not thread-safe.

Version:
1.0
Author:
Alejandro Alberola, David Jencks, Mark Rotteveel
  • Field Details

  • Constructor Details

    • XdrOutputStream

      public XdrOutputStream(OutputStream out)
      Create a new instance of XdrOutputStream with default buffer size.
      Parameters:
      out - The underlying OutputStream to write to
    • XdrOutputStream

      public XdrOutputStream(OutputStream out, int bufferSize)
      Create a new instance of XdrOutputStream with the specified buffer size.
      Parameters:
      out - The underlying OutputStream to write to
      bufferSize - The size of the buffer
  • Method Details

    • writeAlignment

      public void writeAlignment(int length) throws IOException
      Writes the 0x00 alignment for the specified length. This padding is calculated as (4 - length) & 3.
      Parameters:
      length - The length of the previously written buffer to pad
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
    • writeZeroPadding

      public void writeZeroPadding(int length) throws IOException
      Writes zero padding of the specified length
      Parameters:
      length - Length to write
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
      See Also:
    • writeSpacePadding

      public void writeSpacePadding(int length) throws IOException
      Writes space (0x20) padding of the specified length
      Parameters:
      length - Length to write
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
      See Also:
    • writePadding

      public void writePadding(int length, int padByte) throws IOException
      Writes padding for the specified length of the specified padding byte.

      Prefer using the more specific writeZeroPadding(int) and writeZeroPadding(int).

      Parameters:
      length - Length of padding to write
      padByte - Padding byte to use
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
      See Also:
    • writeBuffer

      public void writeBuffer(byte[] buffer) throws IOException
      Write a byte buffer to the underlying output stream in XDR format.
      Parameters:
      buffer - The byte buffer to be written
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
    • writeString

      public void writeString(String s, Encoding encoding) throws IOException
      Write content of the specified string using the specified encoding.
      Throws:
      IOException
    • writeTyped

      public void writeTyped(int type, Xdrable item) throws IOException
      Write an Xdrable to this output stream.
      Parameters:
      type - Type of the Xdrable to be written, e.g. ISCConstants.isc_tpb_version3
      item - The object to be written
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
    • writeTyped

      public void writeTyped(ParameterBuffer parameterBuffer) throws IOException
      Throws:
      IOException
    • writeLong

      public void writeLong(long v) throws IOException
      Write a long value to the underlying stream in XDR format.
      Parameters:
      v - The long value to be written
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
    • writeInt

      public void writeInt(int v) throws IOException
      Write an int value to the underlying stream in XDR format.
      Parameters:
      v - The int value to be written
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
    • write

      public void write(byte[] b, int offset, int len, int pad) throws IOException
      Write a byte buffer to the underlying output stream in XDR format.
      Parameters:
      b - The byte buffer to be written
      offset - The start offset in the buffer
      len - The number of bytes to write
      pad - The number of (blank) padding bytes to write
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
    • write

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

      Important: do not confuse this method with write(byte[], int, int, int) which originally had the signature of this method.

      Overrides:
      write in class BufferedOutputStream
      Parameters:
      b - The data
      off - The start offset in the data
      len - The number of bytes to write
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
    • close

      public void close() throws IOException
      Close this stream and the underlying output stream.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class FilterOutputStream
      Throws:
      IOException - if an error occurs while closing the underlying stream
    • enableCompression

      @InternalApi public void enableCompression() throws IOException
      Wraps the underlying stream for zlib compression.
      Throws:
      IOException - If the underlying stream is already set up for compression
    • setCipher

      public void setCipher(Cipher cipher) throws IOException
      Throws:
      IOException
    • writeDirect

      public void writeDirect(byte[] data) throws IOException
      Writes directly to the OutputStream of the underlying socket.
      Parameters:
      data - Data to write
      Throws:
      IOException - For errors writing to the socket.