diff options
Diffstat (limited to 'xtra4j-misc/src/main/java/ch/hiddenalpha/xtra4j/octetstream/ByteCountOutputStream.java')
-rw-r--r-- | xtra4j-misc/src/main/java/ch/hiddenalpha/xtra4j/octetstream/ByteCountOutputStream.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/xtra4j-misc/src/main/java/ch/hiddenalpha/xtra4j/octetstream/ByteCountOutputStream.java b/xtra4j-misc/src/main/java/ch/hiddenalpha/xtra4j/octetstream/ByteCountOutputStream.java new file mode 100644 index 0000000..1cb9d0d --- /dev/null +++ b/xtra4j-misc/src/main/java/ch/hiddenalpha/xtra4j/octetstream/ByteCountOutputStream.java @@ -0,0 +1,40 @@ +package ch.hiddenalpha.xtra4j.octetstream; + +import java.io.IOException; +import java.io.OutputStream; + + +/** + * {@link OutputStream} decorator to count bytes flowed through the stream. + */ +public class ByteCountOutputStream extends OutputStream { + + private final OutputStream origin; + private long numBytes = 0; + + public ByteCountOutputStream( OutputStream origin ){ + this.origin = origin; + } + + /** @return How many bytes did pass that stream up to now. */ + public long getByteCount() { return numBytes; } + + @Override + public void write( int b ) throws IOException { + numBytes += 1; + origin.write(b); + } + + @Override + public void write( byte[] b, int off, int len ) throws IOException { + numBytes += len; + origin.write(b, off, len); + } + + @Override + public void flush() throws IOException { origin.flush(); } + + @Override + public void close() throws IOException { origin.close(); } + +} |