summaryrefslogtreecommitdiff
path: root/xtra4j-misc/src/main/java/ch/hiddenalpha/xtra4j/octetstream/ByteCountOutputStream.java
diff options
context:
space:
mode:
authorAndreas Fankhauser hiddenalpha.ch2022-12-30 01:05:20 +0100
committerAndreas Fankhauser hiddenalpha.ch2022-12-30 01:05:20 +0100
commitb426acc268453ddd342921c53f2e48faac8a0b8f (patch)
tree67dc63a49c231de8efe339d1ee37e5928a0c0244 /xtra4j-misc/src/main/java/ch/hiddenalpha/xtra4j/octetstream/ByteCountOutputStream.java
parent8321e3d6f61bbca4570cfafc4ce5bc195a8c60fa (diff)
downloadxtra4j-wip-setup.zip
xtra4j-wip-setup.tar.gz
Add ByteCountOutputStream and ByteCountInputStreamwip-setup
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.java40
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(); }
+
+}