Package net.metanotion.io.block.index
Class BSkipSpan<K extends Comparable<? super K>,V>
java.lang.Object
net.metanotion.util.skiplist.SkipSpan<K,V>
net.metanotion.io.block.index.BSkipSpan<K,V>
- All Implemented Interfaces:
Flushable
- Direct Known Subclasses:
IBSkipSpan
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)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final BlockFilestatic final intprotected static final intprotected booleanprotected Serializer<K> protected static final intprotected intprotected intprotected intprotected intprotected intprotected Serializer<V> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidflush()static voidvoidprotected voidloadData()I2P - second half of load() Load the whole span's keys and values into memoryprotected voidloadData(boolean flushOnError) I2P - second half of load() Load the whole span's keys and values into memoryprotected static <X extends Comparable<? super X>,Y>
voidloadInit(BSkipSpan<X, Y> bss, BlockFile bf, BSkipList<X, Y> bsl, int spanPage, Serializer<X> key, Serializer<Y> val) I2P - first half of load() Only read the span headersprotected voidlostEntries(int firstBadEntry, int lastGoodPage) Attempt to recover from corrupt data in this span.newInstance(SkipList<K, V> sl) toString()
-
Field Details
-
MAGIC
protected static final int MAGIC- See Also:
-
HEADER_LEN
protected static final int HEADER_LEN- See Also:
-
CONT_HEADER_LEN
public static final int CONT_HEADER_LEN- See Also:
-
bf
-
page
protected int page -
overflowPage
protected int overflowPage -
prevPage
protected int prevPage -
nextPage
protected int nextPage -
keySer
-
valSer
-
spanSize
protected int spanSize -
isKilled
protected boolean isKilled
-
-
Constructor Details
-
BSkipSpan
-
BSkipSpan
public BSkipSpan(BlockFile bf, BSkipList<K, V> bsl, int spanPage, Serializer<K> key, Serializer<V> val) throws IOException- Throws:
IOException
-
-
Method Details
-
init
- Throws:
IOException
-
newInstance
- Overrides:
newInstancein classSkipSpan<K extends Comparable<? super K>,V>
-
killInstance
public void killInstance()- Overrides:
killInstancein classSkipSpan<K extends Comparable<? super K>,V>
-
flush
public void flush() -
loadInit
protected static <X extends Comparable<? super X>,Y> void loadInit(BSkipSpan<X, Y> bss, BlockFile bf, BSkipList<X, throws IOExceptionY> bsl, int spanPage, Serializer<X> key, Serializer<Y> val) I2P - first half of load() Only read the span headers- Throws:
IOException
-
loadData
I2P - second half of load() Load the whole span's keys and values into memory- Throws:
IOException
-
loadData
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
-