Class ReplayableInputStream

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

    public class ReplayableInputStream
    extends java.io.InputStream
    This class represents an input stream wraps another, and that can be reset and played over. It accomplishes this by buffering all bytes that go past, and then plays back from that buffer after the reset. The caller, at some point, is expected to signal that no further restarts will occur, which ends all attempts at buffering.
    • Constructor Summary

      Constructors 
      Constructor Description
      ReplayableInputStream​(java.io.InputStream wrappedStream)
      Constructor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      int read()  
      int read​(byte[] b, int off, int len)  
      void restart​(boolean lastRestart)  
      long skip​(long n)  
      • Methods inherited from class java.io.InputStream

        available, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, transferTo
      • Methods inherited from class java.lang.Object

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

      • wrappedStream

        protected final java.io.InputStream wrappedStream
      • bytePosition

        protected int bytePosition
      • doBuffering

        protected boolean doBuffering
    • Constructor Detail

      • ReplayableInputStream

        public ReplayableInputStream​(java.io.InputStream wrappedStream)
        Constructor
    • Method Detail

      • restart

        public void restart​(boolean lastRestart)
      • read

        public int read()
                 throws java.io.IOException
        Specified by:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • skip

        public long skip​(long n)
                  throws java.io.IOException
        Overrides:
        skip in class java.io.InputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.InputStream
        Throws:
        java.io.IOException