package org.prevayler.foundation.gzip;
import org.prevayler.foundation.gzip.ContinuableGZIPInputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
public class MultiMemberGZIPInputStream extends InputStream {
private ContinuableGZIPInputStream _gzip;
public MultiMemberGZIPInputStream(InputStream stream) throws IOException {
_gzip = new ContinuableGZIPInputStream(stream);
}
public int available() throws IOException {
return _gzip.available();
}
public int read() throws IOException {
byte[] buf = new byte[1];
int n = read(buf);
return n == -1 ? -1 : buf[0];
}
public int read(byte b[]) throws IOException {
return read(b, 0, b.length);
}
public int read(byte b[], int off, int len) throws IOException {
int n = _gzip.read(b, off, len);
if (n == -1) {
try {
_gzip = new ContinuableGZIPInputStream(_gzip.remainingInput());
} catch (EOFException e) {
return -1;
}
return _gzip.read(b, off, len);
}
return n;
}
public void close() throws IOException {
throw new UnsupportedOperationException();
}
public void reset() throws IOException {
throw new UnsupportedOperationException();
}
public boolean markSupported() {
return false;
}
public void mark(int readlimit) {
throw new UnsupportedOperationException();
}
public long skip(long n) throws IOException {
throw new UnsupportedOperationException();
}
}