Wrap wrapper with buffer

This commit is contained in:
topjohnwu 2017-10-13 20:47:14 +08:00
parent 186bd11463
commit e140481f14
2 changed files with 63 additions and 3 deletions

View File

@ -11,6 +11,7 @@ import android.widget.Toast;
import com.topjohnwu.magisk.FlashActivity;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.container.InputStreamWrapper;
import com.topjohnwu.magisk.utils.Shell;
import com.topjohnwu.magisk.utils.Utils;
import com.topjohnwu.magisk.utils.WebService;
@ -116,7 +117,7 @@ public class ProcessRepoZip extends ParallelTask<Void, Object, Boolean> {
break;
} while (true);
InputStream in = new ProgressUpdateInputStream(conn.getInputStream());
InputStream in = new BufferedInputStream(new ProgressInputStream(conn.getInputStream()));
// Temp files
File temp1 = new File(activity.getCacheDir(), "1.zip");
@ -186,9 +187,9 @@ public class ProcessRepoZip extends ParallelTask<Void, Object, Boolean> {
return this;
}
private class ProgressUpdateInputStream extends BufferedInputStream {
private class ProgressInputStream extends InputStreamWrapper {
ProgressUpdateInputStream(@NonNull InputStream in) {
ProgressInputStream(InputStream in) {
super(in);
}

View File

@ -0,0 +1,59 @@
package com.topjohnwu.magisk.container;
import android.support.annotation.NonNull;
import java.io.IOException;
import java.io.InputStream;
public class InputStreamWrapper extends InputStream {
private InputStream in;
public InputStreamWrapper(InputStream in) {
this.in = in;
}
@Override
public int available() throws IOException {
return in.available();
}
@Override
public void close() throws IOException {
in.close();
}
@Override
public synchronized void mark(int readlimit) {
in.mark(readlimit);
}
@Override
public boolean markSupported() {
return in.markSupported();
}
@Override
public synchronized int read() throws IOException {
return in.read();
}
@Override
public int read(@NonNull byte[] b) throws IOException {
return read(b, 0, b.length);
}
@Override
public synchronized int read(@NonNull byte[] b, int off, int len) throws IOException {
return in.read(b, off, len);
}
@Override
public synchronized void reset() throws IOException {
in.reset();
}
@Override
public long skip(long n) throws IOException {
return in.skip(n);
}
}