Class Node

    • Constructor Summary

      Constructors 
      Constructor Description
      Node​(NodeType nodeType, int compressedPrefixSize)
      constructor
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      static int binarySearch​(byte[] key, int fromIndex, int toIndex, byte k)
      search the position of the input byte key in the node's key byte array part
      static void copyPrefix​(Node src, Node dst)
      copy the prefix between two nodes
      static Node deserialize​(java.io.DataInput dataInput)
      deserialize into a typed node from the byte stream
      static Node deserialize​(java.nio.ByteBuffer byteBuffer)
      deserialize into a typed node
      abstract Node getChild​(int pos)
      get the child at the specified position in the node, the 'pos' range from 0 to count
      abstract byte getChildKey​(int pos)
      get the corresponding key byte of the requested position
      abstract int getChildPos​(byte k)
      get the position of a child corresponding to the input key 'k'
      abstract int getMaxPos()
      get the max child's position
      abstract int getMinPos()
      get the position of the min element in current node.
      abstract int getNextLargerPos​(int pos)
      get the next position in the node
      abstract int getNextSmallerPos​(int pos)
      get the next smaller element's position
      static Node insertLeaf​(Node current, LeafNode childNode, byte key)
      insert the LeafNode as a child of the current internal node
      abstract Node remove​(int pos)
      remove the specified position child
      abstract void replaceNode​(int pos, Node freshOne)
      replace the position child to the fresh one
      void serialize​(java.io.DataOutput dataOutput)
      serialize
      void serialize​(java.nio.ByteBuffer byteBuffer)
      serialize
      abstract int serializeNodeBodySizeInBytes()
      the serialized size except the common node header part
      int serializeSizeInBytes()
      the serialized size in bytes of this node
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • prefixLength

        protected byte prefixLength
      • prefix

        protected byte[] prefix
      • count

        protected short count
    • Constructor Detail

      • Node

        public Node​(NodeType nodeType,
                    int compressedPrefixSize)
        constructor
        Parameters:
        nodeType - the node type
        compressedPrefixSize - the prefix byte array size,less than or equal to 6
    • Method Detail

      • getChildPos

        public abstract int getChildPos​(byte k)
        get the position of a child corresponding to the input key 'k'
        Parameters:
        k - a key value of the byte range
        Returns:
        the child position corresponding to the key 'k'
      • getChildKey

        public abstract byte getChildKey​(int pos)
        get the corresponding key byte of the requested position
        Parameters:
        pos - the position
        Returns:
        the corresponding key byte
      • getChild

        public abstract Node getChild​(int pos)
        get the child at the specified position in the node, the 'pos' range from 0 to count
        Parameters:
        pos - the position
        Returns:
        a Node corresponding to the input position
      • replaceNode

        public abstract void replaceNode​(int pos,
                                         Node freshOne)
        replace the position child to the fresh one
        Parameters:
        pos - the position
        freshOne - the fresh node to replace the old one
      • getMinPos

        public abstract int getMinPos()
        get the position of the min element in current node.
        Returns:
        the minimum key's position
      • getNextLargerPos

        public abstract int getNextLargerPos​(int pos)
        get the next position in the node
        Parameters:
        pos - current position,-1 to start from the min one
        Returns:
        the next larger byte key's position which is close to 'pos' position,-1 for end
      • getMaxPos

        public abstract int getMaxPos()
        get the max child's position
        Returns:
        the max byte key's position
      • getNextSmallerPos

        public abstract int getNextSmallerPos​(int pos)
        get the next smaller element's position
        Parameters:
        pos - the position,-1 to start from the largest one
        Returns:
        the next smaller key's position which is close to input 'pos' position,-1 for end
      • remove

        public abstract Node remove​(int pos)
        remove the specified position child
        Parameters:
        pos - the position to remove
        Returns:
        an adaptive changed fresh node of the current node
      • serialize

        public void serialize​(java.io.DataOutput dataOutput)
                       throws java.io.IOException
        serialize
        Parameters:
        dataOutput - the DataOutput
        Throws:
        java.io.IOException - signal a exception happened while the serialization
      • serialize

        public void serialize​(java.nio.ByteBuffer byteBuffer)
                       throws java.io.IOException
        serialize
        Parameters:
        byteBuffer - the ByteBuffer
        Throws:
        java.io.IOException - signal a exception happened while the serialization
      • serializeSizeInBytes

        public int serializeSizeInBytes()
        the serialized size in bytes of this node
        Returns:
        the size in bytes
      • deserialize

        public static Node deserialize​(java.io.DataInput dataInput)
                                throws java.io.IOException
        deserialize into a typed node from the byte stream
        Parameters:
        dataInput - the input byte stream
        Returns:
        the typed node
        Throws:
        java.io.IOException - indicate a exception happened
      • deserialize

        public static Node deserialize​(java.nio.ByteBuffer byteBuffer)
                                throws java.io.IOException
        deserialize into a typed node
        Parameters:
        byteBuffer - the ByteBuffer
        Returns:
        the typed node
        Throws:
        java.io.IOException - indicate a exception happened
      • serializeNodeBodySizeInBytes

        public abstract int serializeNodeBodySizeInBytes()
        the serialized size except the common node header part
        Returns:
        the size in bytes
      • insertLeaf

        public static Node insertLeaf​(Node current,
                                      LeafNode childNode,
                                      byte key)
        insert the LeafNode as a child of the current internal node
        Parameters:
        current - current internal node
        childNode - the leaf node
        key - the key byte reference to the child leaf node
        Returns:
        an adaptive changed node of the input 'current' node
      • copyPrefix

        public static void copyPrefix​(Node src,
                                      Node dst)
        copy the prefix between two nodes
        Parameters:
        src - the source node
        dst - the destination node
      • binarySearch

        public static int binarySearch​(byte[] key,
                                       int fromIndex,
                                       int toIndex,
                                       byte k)
        search the position of the input byte key in the node's key byte array part
        Parameters:
        key - the input key byte array
        fromIndex - inclusive
        toIndex - exclusive
        k - the target key byte value
        Returns:
        the array offset of the target input key 'k' or -1 to not found