Class WrappedInputStream

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

    public class WrappedInputStream
    extends java.io.FilterInputStream
    This input stream works in conjunction with the WrappedOutputStream to introduce a protocol for reading arbitrary length data in a uniform way.

    Note: See the javadoc for WrappedOutputStream for more information.

    See Also:
    WrappedOutputStream
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean fClosed
      To mark that the stream is "closed".
      protected java.io.DataInputStream fDataInputStream
      Data input stream.
      protected int fPacketCount
      Bytes left on input stream for current packet.
      • Fields inherited from class java.io.FilterInputStream

        in
    • Constructor Summary

      Constructors 
      Constructor Description
      WrappedInputStream​(java.io.InputStream stream)
      Constructs a wrapper for the given an input stream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Closes the input stream.
      int read()
      Reads a single byte.
      int read​(byte[] b, int offset, int length)
      Reads a block of bytes and returns the total number of bytes read.
      long skip​(long n)
      Skips the specified number of bytes from the input stream.
      • Methods inherited from class java.io.FilterInputStream

        available, mark, markSupported, read, reset
      • 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
    • Field Detail

      • fPacketCount

        protected int fPacketCount
        Bytes left on input stream for current packet.
      • fDataInputStream

        protected java.io.DataInputStream fDataInputStream
        Data input stream. This stream is used to input the block sizes from the data stream that are written by the WrappedOutputStream.

        Note: The data input stream is only used for reading the byte count for performance reasons. We avoid the method indirection for reading the byte data.

      • fClosed

        protected boolean fClosed
        To mark that the stream is "closed".
    • Constructor Detail

      • WrappedInputStream

        public WrappedInputStream​(java.io.InputStream stream)
        Constructs a wrapper for the given an input stream.
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        Reads a single byte.
        Overrides:
        read in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b,
                        int offset,
                        int length)
                 throws java.io.IOException
        Reads a block of bytes and returns the total number of bytes read.
        Overrides:
        read in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • skip

        public long skip​(long n)
                  throws java.io.IOException
        Skips the specified number of bytes from the input stream.
        Overrides:
        skip in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Closes the input stream. This method will search for the end of the wrapped input, positioning the stream at after the end packet.

        Note: This method does not close the underlying input stream.

        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.FilterInputStream
        Throws:
        java.io.IOException