Class XdrInputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public final class XdrInputStream
    extends java.io.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.

    Author:
    Alejandro Alberola, David Jencks, Mark Rotteveel
    • Field Summary

      • Fields inherited from class java.io.FilterInputStream

        in
    • Constructor Summary

      Constructors 
      Constructor Description
      XdrInputStream​(java.io.InputStream in)
      Create a new instance of XdrInputStream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void enableDecompression()
      Wraps the underlying stream for zlib decompression.
      byte[] readBuffer()
      Read in a byte buffer.
      void readFully​(byte[] b, int off, int len)
      Read a given amount of data from the underlying input stream.
      int readInt()
      Read in an int.
      long readLong()
      Read in a long.
      byte[] readRawBuffer​(int len)
      Read in a raw array of bytes.
      int readShort()
      Read in a short.
      java.lang.String readString​(Encoding encoding)
      Read in a String.
      void setCipher​(javax.crypto.Cipher cipher)  
      int skipFully​(int numbytes)
      Skips the specified number of bytes.
      int skipPadding​(int length)
      Skips the padding after a buffer of the specified length.
      • Methods inherited from class java.io.FilterInputStream

        available, close, mark, markSupported, read, read, read, reset, skip
      • Methods inherited from class java.io.InputStream

        nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • XdrInputStream

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

      • skipPadding

        public int skipPadding​(int length)
                        throws java.io.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:
        java.io.IOException - IOException if an error occurs while reading from the underlying input stream
        See Also:
        XdrOutputStream.writePadding(int, int)
      • skipFully

        public int skipFully​(int numbytes)
                      throws java.io.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:
        java.io.IOException - IOException if an error occurs while reading from the underlying input stream
      • readBuffer

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

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

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

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

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

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

        public void readFully​(byte[] b,
                              int off,
                              int len)
                       throws java.io.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:
        java.io.IOException - if an error occurs while reading from the underlying input stream
      • enableDecompression

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

        public void setCipher​(javax.crypto.Cipher cipher)
                       throws java.io.IOException
        Throws:
        java.io.IOException