net.metanotion.io.block.index
Class BSkipSpan
java.lang.Object
net.metanotion.util.skiplist.SkipSpan
net.metanotion.io.block.index.BSkipSpan
- All Implemented Interfaces:
- Flushable
- Direct Known Subclasses:
- IBSkipSpan
public class BSkipSpan
- extends SkipSpan
On-disk format:
First Page:
Magic number (int)
overflow page (unsigned int)
previous page (unsigned int)
next page (unsigned int)
max keys (unsigned short)
number of keys (unsigned short)
for each key:
key length (unsigned short)
value length (unsigned short)
key data
value data
Overflow pages:
Magic number (int)
next overflow page (unsigned int)
MAGIC
protected static final int MAGIC
- See Also:
- Constant Field Values
HEADER_LEN
protected static final int HEADER_LEN
- See Also:
- Constant Field Values
CONT_HEADER_LEN
public static final int CONT_HEADER_LEN
- See Also:
- Constant Field Values
bf
protected final BlockFile bf
page
protected int page
overflowPage
protected int overflowPage
prevPage
protected int prevPage
nextPage
protected int nextPage
keySer
protected Serializer keySer
valSer
protected Serializer valSer
spanSize
protected int spanSize
isKilled
protected boolean isKilled
BSkipSpan
protected BSkipSpan(BlockFile bf,
BSkipList bsl)
BSkipSpan
public BSkipSpan(BlockFile bf,
BSkipList bsl,
int spanPage,
Serializer key,
Serializer val)
throws IOException
- Throws:
IOException
init
public static void init(BlockFile bf,
int page,
int spanSize)
throws IOException
- Throws:
IOException
newInstance
public SkipSpan newInstance(SkipList sl)
- Overrides:
newInstance
in class SkipSpan
killInstance
public void killInstance()
- Overrides:
killInstance
in class SkipSpan
flush
public void flush()
- Specified by:
flush
in interface Flushable
- Overrides:
flush
in class SkipSpan
loadInit
protected static void loadInit(BSkipSpan bss,
BlockFile bf,
BSkipList bsl,
int spanPage,
Serializer key,
Serializer val)
throws IOException
- I2P - first half of load()
Only read the span headers
- Throws:
IOException
loadData
protected void loadData()
throws IOException
- I2P - second half of load()
Load the whole span's keys and values into memory
- Throws:
IOException
loadData
protected void loadData(boolean flushOnError)
throws IOException
- I2P - second half of load()
Load the whole span's keys and values into memory
- Parameters:
flushOnError
- set to false if you are going to flush anyway
- Throws:
IOException
lostEntries
protected void lostEntries(int firstBadEntry,
int lastGoodPage)
- Attempt to recover from corrupt data in this span.
All entries starting with firstBadEntry are lost.
Zero out the overflow page on lastGoodPage,
and corect the number of entries in the first page.
We don't attempt to free the lost continuation pages.
toString
public String toString()
- Overrides:
toString
in class Object