net.metanotion.io.block.index

## Class BSkipList

- java.lang.Object
- - net.metanotion.util.skiplist.SkipList
  - - net.metanotion.io.block.index.BSkipList

-     public class BSkipList
      extends SkipList

  On-disk format:

          Magic number (long)
          first span page (unsigned int)
          first level page (unsigned int)
          size (unsigned int)
          spans (unsigned int)
          levels (unsigned int)

  Always fits on one page.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `BlockFile` | `bf`
    `int` | `firstLevelPage`
    `int` | `firstSpanPage`
    `(package private) HashMap<Integer,SkipLevels>` | `levelHash`
    `int` | `skipPage`
    `(package private) HashMap<Integer,BSkipSpan>` | `spanHash`

    - ### Fields inherited from class net.metanotion.util.skiplist.SkipList

      `first, P, rng, size, stack`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BSkipList(int spanSize, BlockFile bf, int skipPage, Serializer key, Serializer val)`
    `BSkipList(int spanSize, BlockFile bf, int skipPage, Serializer key, Serializer val, boolean fileOnly)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `bslck(boolean isMeta, boolean fix)`
    `void` | `close()`
    `void` | `delete()` must be open (do not call close() first)
    `SkipIterator` | `find(Comparable key)`
    `void` | `flush()`
    `static void` | `init(BlockFile bf, int page, int spanSize)`
    `SkipIterator` | `iterator()`
    `SkipIterator` | `max()`
    `int` | `maxLevels()`
    `SkipIterator` | `min()`
    `String` | `toString()`

    - ### Methods inherited from class net.metanotion.util.skiplist.SkipList

      `addItem, balance, delItem, generateColHeight, get, print, printSL, put, remove, size`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### firstSpanPage

          public int firstSpanPage

    - #### firstLevelPage

          public int firstLevelPage

    - #### skipPage

          public int skipPage

    - #### bf

          public final BlockFile bf

    - #### spanHash

          final HashMap<Integer,BSkipSpan> spanHash

    - #### levelHash

          final HashMap<Integer,SkipLevels> levelHash

  - ### Constructor Detail

    - #### BSkipList

          public BSkipList(int spanSize,
                   BlockFile bf,
                   int skipPage,
                   Serializer key,
                   Serializer val)
                    throws IOException

      Throws:
        `IOException`

    - #### BSkipList

          public BSkipList(int spanSize,
                   BlockFile bf,
                   int skipPage,
                   Serializer key,
                   Serializer val,
                   boolean fileOnly)
                    throws IOException

      Throws:
        `IOException`

  - ### Method Detail

    - #### close

          public void close()

    - #### flush

          public void flush()

      Overrides:
        `flush` in class `SkipList`

    - #### delete

          public void delete()
                      throws IOException

      must be open (do not call close() first)
      Throws:
        `IOException`

    - #### init

          public static void init(BlockFile bf,
                  int page,
                  int spanSize)
                           throws IOException

      Throws:
        `IOException`

    - #### maxLevels

          public int maxLevels()

      Overrides:
        `maxLevels` in class `SkipList`
      Returns:
        log2(span count), minimum 4

    - #### iterator

          public SkipIterator iterator()

      Overrides:
        `iterator` in class `SkipList`

    - #### min

          public SkipIterator min()

      Overrides:
        `min` in class `SkipList`

    - #### max

          public SkipIterator max()

      Overrides:
        `max` in class `SkipList`

    - #### find

          public SkipIterator find(Comparable key)

      Overrides:
        `find` in class `SkipList`
      Returns:
        an iterator where nextKey() is the first one greater than or equal to 'key'

    - #### bslck

          public void bslck(boolean isMeta,
                   boolean fix)

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`