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
`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
`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`