public static LockableRandomAccessBuffer restoreRAFFrom(DataInputStream dis,
FilenameGenerator fg, PersistentFileTracker persistentFileTracker, MasterSecret masterSecret)
throws IOException, StorageFormatException, ResumeFailedException {
int magic = dis.readInt();
switch(magic) {
case PooledFileRandomAccessBuffer.MAGIC:
return new PooledFileRandomAccessBuffer(dis, fg, persistentFileTracker);
case FileRandomAccessBuffer.MAGIC:
return new FileRandomAccessBuffer(dis);
case ReadOnlyRandomAccessBuffer.MAGIC:
return new ReadOnlyRandomAccessBuffer(dis, fg, persistentFileTracker, masterSecret);
case DelayedFreeRandomAccessBuffer.MAGIC:
return new DelayedFreeRandomAccessBuffer(dis, fg, persistentFileTracker, masterSecret);
case EncryptedRandomAccessBuffer.MAGIC:
return EncryptedRandomAccessBuffer.create(dis, fg, persistentFileTracker, masterSecret);
case PaddedRandomAccessBuffer.MAGIC:
return new PaddedRandomAccessBuffer(dis, fg, persistentFileTracker, masterSecret);
default:
throw new StorageFormatException("Unknown magic value for RAF "+magic);
}
}