package freenet.client.async;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import freenet.support.api.Bucket;
public class ReadBucketAndFreeInputStream extends FilterInputStream {
private final Bucket data;
public static InputStream create(Bucket data) throws IOException {
return new ReadBucketAndFreeInputStream(data.getInputStream(), data);
}
private ReadBucketAndFreeInputStream(InputStream in, Bucket data) {
super(in);
this.data = data;
}
@Override
public int read(byte[] buf, int offset, int length) throws IOException {
// Necessary for efficiency, FilterInputStream pipes everything through "int read()".
return in.read(buf, offset, length);
}
@Override
public int read(byte[] buf) throws IOException {
return read(buf, 0, buf.length);
}
@Override
public void close() throws IOException {
in.close();
data.free();
}
}