Package org.pipecraft.infra.io
Class ThreadSafeCountingInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- org.pipecraft.infra.io.ThreadSafeCountingInputStream
-
- All Implemented Interfaces:
Closeable,AutoCloseable
public final class ThreadSafeCountingInputStream extends FilterInputStream
Copied from Guava'sCountingInputStream. Changed the state variables to be volatile, to allow the caller of the getCount() to be from a different thread than the reader thread. So it's thread safe in the sense that we allow a single reader thread, and multiple querying threads calling getCount().- Author:
- Eyal Schneider
-
-
Field Summary
-
Fields inherited from class java.io.FilterInputStream
in
-
-
Constructor Summary
Constructors Constructor Description ThreadSafeCountingInputStream(InputStream in)Wraps another input stream, counting the number of bytes read.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longgetCount()Returns the number of bytes read.voidmark(int readlimit)intread()intread(byte[] b, int off, int len)voidreset()longskip(long n)-
Methods inherited from class java.io.FilterInputStream
available, close, markSupported, read
-
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
Constructor Detail
-
ThreadSafeCountingInputStream
public ThreadSafeCountingInputStream(InputStream in)
Wraps another input stream, counting the number of bytes read.- Parameters:
in- the input stream to be wrapped
-
-
Method Detail
-
getCount
public long getCount()
Returns the number of bytes read.
-
read
public int read() throws IOException- Overrides:
readin classFilterInputStream- Throws:
IOException
-
read
public int read(byte[] b, int off, int len) throws IOException- Overrides:
readin classFilterInputStream- Throws:
IOException
-
skip
public long skip(long n) throws IOException- Overrides:
skipin classFilterInputStream- Throws:
IOException
-
mark
public void mark(int readlimit)
- Overrides:
markin classFilterInputStream
-
reset
public void reset() throws IOException- Overrides:
resetin classFilterInputStream- Throws:
IOException
-
-