package freenet.support.io;
import java.io.IOException;
import java.util.Arrays;
import freenet.support.api.LockableRandomAccessBuffer;
import freenet.support.api.LockableRandomAccessBufferFactory;
public class ByteArrayRandomAccessBufferFactory implements LockableRandomAccessBufferFactory {
@Override
public LockableRandomAccessBuffer makeRAF(long size) throws IOException {
if(size < 0) throw new IllegalArgumentException();
if(size > Integer.MAX_VALUE) throw new IOException("Too big");
byte[] buf = new byte[(int)size];
return new ByteArrayRandomAccessBuffer(buf);
}
@Override
public LockableRandomAccessBuffer makeRAF(byte[] initialContents, int offset, int size, boolean readOnly)
throws IOException {
if(size < 0) throw new IllegalArgumentException();
return new ByteArrayRandomAccessBuffer(Arrays.copyOfRange(initialContents, offset,
offset+size), 0, size, readOnly);
}
}