55 lines
1.1 KiB
Java
55 lines
1.1 KiB
Java
|
package org.apache.jdbm;
|
||
|
|
||
|
import java.io.*;
|
||
|
import java.nio.ByteBuffer;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
interface Storage {
|
||
|
|
||
|
/**
|
||
|
* Bite shift used to calculate page size.
|
||
|
* If you want to modify page size, do it here.
|
||
|
*
|
||
|
* 1<<9 = 512
|
||
|
* 1<<10 = 1024
|
||
|
* 1<<11 = 2048
|
||
|
* 1<<12 = 4096
|
||
|
*/
|
||
|
int PAGE_SIZE_SHIFT = 12;
|
||
|
|
||
|
/**
|
||
|
* the lenght of single page.
|
||
|
* <p>
|
||
|
*!!! DO NOT MODIFY THI DIRECTLY !!!
|
||
|
|
||
|
*/
|
||
|
int PAGE_SIZE = 1<< PAGE_SIZE_SHIFT;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* use 'val & OFFSET_MASK' to quickly get offset within the page;
|
||
|
*/
|
||
|
long OFFSET_MASK = 0xFFFFFFFFFFFFFFFFL >>> (64-Storage.PAGE_SIZE_SHIFT);
|
||
|
|
||
|
|
||
|
void write(long pageNumber, ByteBuffer data) throws IOException;
|
||
|
|
||
|
ByteBuffer read(long pageNumber) throws IOException;
|
||
|
|
||
|
void forceClose() throws IOException;
|
||
|
|
||
|
boolean isReadonly();
|
||
|
|
||
|
DataInputStream readTransactionLog();
|
||
|
|
||
|
void deleteTransactionLog();
|
||
|
|
||
|
void sync() throws IOException;
|
||
|
|
||
|
DataOutputStream openTransactionLog() throws IOException;
|
||
|
|
||
|
void deleteAllFiles() throws IOException;
|
||
|
}
|