Class XdrInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.firebirdsql.gds.impl.wire.XdrInputStream
All Implemented Interfaces:
Closeable, AutoCloseable

public final class XdrInputStream extends FilterInputStream
XdrInputStream is an input stream for reading in data that is in the XDR format. An XdrInputStream instance is wrapped around an underlying java.io.InputStream.

This class is not thread-safe.

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

    • XdrInputStream

      public XdrInputStream(InputStream in)
      Create a new instance of XdrInputStream.
      Parameters:
      in - The underlying InputStream to read from
  • Method Details

    • skipPadding

      public int skipPadding(int length) throws IOException
      Skips the padding after a buffer of the specified length. The number of bytes to skip is calculated as (4 - length) & 3.
      Parameters:
      length - Length of the previously read buffer
      Returns:
      Actual number of bytes skipped
      Throws:
      IOException - IOException if an error occurs while reading from the underlying input stream
      See Also:
    • skipFully

      public int skipFully(int numbytes) throws IOException
      Skips the specified number of bytes.
      Parameters:
      numbytes - Number of bytes to skip.
      Returns:
      Actual number of bytes skipped (usually numbytes, unless the underlying input stream is closed).
      Throws:
      IOException - IOException if an error occurs while reading from the underlying input stream
    • readBuffer

      public byte[] readBuffer() throws IOException
      Read in a byte buffer.
      Returns:
      The buffer that was read
      Throws:
      IOException - if an error occurs while reading from the underlying input stream
    • readRawBuffer

      public byte[] readRawBuffer(int len) throws IOException
      Read in a raw array of bytes.
      Parameters:
      len - The number of bytes to read
      Returns:
      The byte buffer that was read
      Throws:
      IOException - if an error occurs while reading from the underlying input stream
    • readString

      public String readString(Encoding encoding) throws IOException
      Read in a String.
      Returns:
      The String that was read
      Throws:
      IOException - if an error occurs while reading from the underlying input stream
    • readLong

      public long readLong() throws IOException
      Read in a long.
      Returns:
      The long that was read
      Throws:
      IOException - if an error occurs while reading from the underlying input stream
    • readInt

      public int readInt() throws IOException
      Read in an int.
      Returns:
      The int that was read
      Throws:
      IOException - if an error occurs while reading from the underlying input stream
    • readShort

      public int readShort() throws IOException
      Read in a short.
      Returns:
      The short that was read
      Throws:
      IOException - if an error occurs while reading from the underlying input stream
    • readFully

      public void readFully(byte[] b, int off, int len) throws IOException
      Read a given amount of data from the underlying input stream. The data that is read is stored in b, starting from offset off.
      Parameters:
      b - The byte buffer to hold the data that is read
      off - The offset at which to start storing data in b
      len - The number of bytes to be read
      Throws:
      IOException - if an error occurs while reading from the underlying input stream
    • enableDecompression

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

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