From 51866bb2b237033ee6f2ed8a61dcded4b1a51935 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Mon, 17 May 2010 14:19:36 +0000 Subject: keep track of the position the input stream for decryption, makes it possible to give accurate progress information --- .../android/apg/PositionAwareInputStream.java | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/org/thialfihar/android/apg/PositionAwareInputStream.java (limited to 'src/org/thialfihar/android/apg/PositionAwareInputStream.java') diff --git a/src/org/thialfihar/android/apg/PositionAwareInputStream.java b/src/org/thialfihar/android/apg/PositionAwareInputStream.java new file mode 100644 index 000000000..661e053f2 --- /dev/null +++ b/src/org/thialfihar/android/apg/PositionAwareInputStream.java @@ -0,0 +1,67 @@ +package org.thialfihar.android.apg; + +import java.io.IOException; +import java.io.InputStream; + +public class PositionAwareInputStream extends InputStream { + private InputStream mStream; + private long mPosition; + + public PositionAwareInputStream(InputStream in) { + mStream = in; + mPosition = 0; + } + + @Override + public int read() throws IOException { + int ch = mStream.read(); + ++mPosition; + return ch; + } + + @Override + public int available() throws IOException { + return mStream.available(); + } + + @Override + public void close() throws IOException { + mStream.close(); + } + + @Override + public boolean markSupported() { + return false; + } + + @Override + public int read(byte[] b) throws IOException { + int result = mStream.read(b); + mPosition += result; + return result; + } + + @Override + public int read(byte[] b, int offset, int length) throws IOException { + int result = mStream.read(b, offset, length); + mPosition += result; + return result; + } + + @Override + public synchronized void reset() throws IOException { + mStream.reset(); + mPosition = 0; + } + + @Override + public long skip(long n) throws IOException { + long result = mStream.skip(n); + mPosition += result; + return result; + } + + public long position() { + return mPosition; + } +} -- cgit v1.2.3