Added support for gzipped txlog files and org.apache.jdbm as backing

store
This commit is contained in:
2017-01-23 21:23:43 +01:00
parent c8a213e985
commit 1aaf5c837e
48 changed files with 14835 additions and 22 deletions

View File

@ -0,0 +1,54 @@
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;
}