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();
}
}