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

public class BSkipSpan<K extends Comparable<? super K>,V> extends SkipSpan<K,V>
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 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

      protected final BlockFile bf
    • page

      protected int page
    • overflowPage

      protected int overflowPage
    • prevPage

      protected int prevPage
    • nextPage

      protected int nextPage
    • keySer

      protected Serializer<K extends Comparable<? super K>> keySer
    • valSer

      protected Serializer<V> valSer
    • spanSize

      protected int spanSize
    • isKilled

      protected boolean isKilled
  • Constructor Details

  • Method Details

    • init

      public static void init(BlockFile bf, int page, int spanSize) throws IOException
      Throws:
      IOException
    • newInstance

      public SkipSpan<K,V> newInstance(SkipList<K,V> sl)
      Overrides:
      newInstance in class SkipSpan<K extends Comparable<? super K>,V>
    • killInstance

      public void killInstance()
      Overrides:
      killInstance in class SkipSpan<K extends Comparable<? super K>,V>
    • flush

      public void flush()
      Specified by:
      flush in interface Flushable
      Overrides:
      flush in class SkipSpan<K extends Comparable<? super K>,V>
    • loadInit

      protected static <X extends Comparable<? super X>, Y> void loadInit(BSkipSpan<X,Y> bss, BlockFile bf, BSkipList<X,Y> bsl, int spanPage, Serializer<X> key, Serializer<Y> 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