package freenet.support.io;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import freenet.client.async.ClientContext;
import freenet.crypt.MasterSecret;
import freenet.support.api.Bucket;
public class NoFreeBucket implements Bucket, Serializable {
private static final long serialVersionUID = 1L;
final Bucket proxy;
public NoFreeBucket(Bucket orig) {
proxy = orig;
}
protected NoFreeBucket() {
// For serialization.
proxy = null;
}
@Override
public OutputStream getOutputStream() throws IOException {
return proxy.getOutputStream();
}
@Override
public OutputStream getOutputStreamUnbuffered() throws IOException {
return proxy.getOutputStreamUnbuffered();
}
@Override
public InputStream getInputStream() throws IOException {
return proxy.getInputStream();
}
@Override
public InputStream getInputStreamUnbuffered() throws IOException {
return proxy.getInputStreamUnbuffered();
}
@Override
public String getName() {
return proxy.getName();
}
@Override
public long size() {
return proxy.size();
}
@Override
public boolean isReadOnly() {
return proxy.isReadOnly();
}
@Override
public void setReadOnly() {
proxy.setReadOnly();
}
@Override
public void free() {
// Do nothing.
}
@Override
public Bucket createShadow() {
return proxy.createShadow();
}
@Override
public void onResume(ClientContext context) throws ResumeFailedException {
proxy.onResume(context);
}
static final int MAGIC = 0xa88da5c2;
@Override
public void storeTo(DataOutputStream dos) throws IOException {
dos.writeInt(MAGIC);
proxy.storeTo(dos);
}
protected NoFreeBucket(DataInputStream dis, FilenameGenerator fg,
PersistentFileTracker persistentFileTracker, MasterSecret masterKey)
throws IOException, StorageFormatException, ResumeFailedException {
proxy = BucketTools.restoreFrom(dis, fg, persistentFileTracker, masterKey);
}
}