Class SplitStorageEngine<K,​V>

  • Type Parameters:
    K - key type handled by this engine
    V - value type handled by this engine
    All Implemented Interfaces:
    StorageEngine<K,​V>
    Direct Known Subclasses:
    PersistentSplitStorageEngine

    public class SplitStorageEngine<K,​V>
    extends java.lang.Object
    implements StorageEngine<K,​V>
    A StorageEngine composed of two independent engines, one for the keys, one for the values.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void attachedMapping​(long encoding, int hash, int metadata)  
      void bind​(StorageEngine.Owner owner)  
      void clear()
      Called to indicate that all keys and values are now free.
      static <K,​V>
      Factory<SplitStorageEngine<K,​V>>
      createFactory​(Factory<? extends HalfStorageEngine<K>> keyFactory, Factory<? extends HalfStorageEngine<V>> valueFactory)  
      void destroy()  
      static long encoding​(int keyEncoding, int valueEncoding)  
      boolean equalsKey​(java.lang.Object key, long encoding)
      Called to determine the equality of the given object against the given encoded form.
      boolean equalsValue​(java.lang.Object value, long encoding)
      Called to determine the equality of the given Java object value against the given encoded form.
      void freeMapping​(long encoding, int hash, boolean removal)
      Called to indicate that the associated encoded value is no longer needed.
      long getAllocatedMemory()
      Returns a measure of the amount of memory allocated for this storage engine.
      long getDataSize()
      Returns a measure of the total size of the keys and values stored in this storage engine.
      long getOccupiedMemory()
      Returns a measure of the amount of memory consumed by this storage engine.
      long getVitalMemory()
      Returns a measure of the amount of vital memory allocated for this storage engine.
      void invalidateCache()
      Invalidate any local key/value caches.
      static int keyEncoding​(long encoding)  
      K readKey​(long encoding, int hashCode)
      Converts the supplied encoded key into its correct object form.
      V readValue​(long encoding)
      Converts the supplied encoded value into its correct object form.
      boolean shrink()  
      java.lang.String toString()  
      static int valueEncoding​(long encoding)  
      java.lang.Long writeMapping​(K key, V value, int hash, int metadata)
      Converts the supplied key and value objects into their encoded form.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • SplitStorageEngine

        public SplitStorageEngine​(HalfStorageEngine<? super K> keyStorageEngine,
                                  HalfStorageEngine<? super V> valueStorageEngine)
        Creates a composite storage engine, with independent key and value engines.
        Parameters:
        keyStorageEngine - storage engine for the keys
        valueStorageEngine - storage engine for the values
    • Method Detail

      • writeMapping

        public java.lang.Long writeMapping​(K key,
                                           V value,
                                           int hash,
                                           int metadata)
        Description copied from interface: StorageEngine
        Converts the supplied key and value objects into their encoded form.
        Specified by:
        writeMapping in interface StorageEngine<K,​V>
        Parameters:
        key - a key object
        value - a value object
        hash - the key hash
        metadata - the metadata bits
        Returns:
        the encoded mapping
      • attachedMapping

        public void attachedMapping​(long encoding,
                                    int hash,
                                    int metadata)
        Specified by:
        attachedMapping in interface StorageEngine<K,​V>
      • freeMapping

        public void freeMapping​(long encoding,
                                int hash,
                                boolean removal)
        Description copied from interface: StorageEngine
        Called to indicate that the associated encoded value is no longer needed.

        This call can be used to free any associated resources tied to the lifecycle of the supplied encoded value.

        Specified by:
        freeMapping in interface StorageEngine<K,​V>
        Parameters:
        encoding - encoded value
        hash - hash of the freed mapping
        removal - marks removal from a map
      • readValue

        public V readValue​(long encoding)
        Description copied from interface: StorageEngine
        Converts the supplied encoded value into its correct object form.
        Specified by:
        readValue in interface StorageEngine<K,​V>
        Parameters:
        encoding - encoded value
        Returns:
        a decoded value object
      • equalsValue

        public boolean equalsValue​(java.lang.Object value,
                                   long encoding)
        Description copied from interface: StorageEngine
        Called to determine the equality of the given Java object value against the given encoded form.

        Simple implementations will probably perform a decode on the given encoded form in order to do a regular Object.equals(Object) comparison. This method is provided to allow implementations to optimize this comparison if possible.

        Specified by:
        equalsValue in interface StorageEngine<K,​V>
        Parameters:
        value - a value object
        encoding - encoded value
        Returns:
        true if the value and the encoding are equal
      • readKey

        public K readKey​(long encoding,
                         int hashCode)
        Description copied from interface: StorageEngine
        Converts the supplied encoded key into its correct object form.
        Specified by:
        readKey in interface StorageEngine<K,​V>
        Parameters:
        encoding - encoded key
        hashCode - hash-code of the decoded key
        Returns:
        a decoded key object
      • equalsKey

        public boolean equalsKey​(java.lang.Object key,
                                 long encoding)
        Description copied from interface: StorageEngine
        Called to determine the equality of the given object against the given encoded form.

        Simple implementations will probably perform a decode on the given encoded form in order to do a regular Object.equals(Object) comparison. This method is provided to allow implementations to optimize this comparison if possible.

        Specified by:
        equalsKey in interface StorageEngine<K,​V>
        Parameters:
        key - a key object
        encoding - encoded value
        Returns:
        true if the key and the encoding are equal
      • clear

        public void clear()
        Description copied from interface: StorageEngine
        Called to indicate that all keys and values are now free.
        Specified by:
        clear in interface StorageEngine<K,​V>
      • getAllocatedMemory

        public long getAllocatedMemory()
        Description copied from interface: StorageEngine
        Returns a measure of the amount of memory allocated for this storage engine.
        Specified by:
        getAllocatedMemory in interface StorageEngine<K,​V>
        Returns:
        memory allocated for this engine in bytes
      • getOccupiedMemory

        public long getOccupiedMemory()
        Description copied from interface: StorageEngine
        Returns a measure of the amount of memory consumed by this storage engine.
        Specified by:
        getOccupiedMemory in interface StorageEngine<K,​V>
        Returns:
        memory occupied by this engine in bytes
      • getVitalMemory

        public long getVitalMemory()
        Description copied from interface: StorageEngine
        Returns a measure of the amount of vital memory allocated for this storage engine.
        Specified by:
        getVitalMemory in interface StorageEngine<K,​V>
        Returns:
        vital memory allocated for this engine in bytes
      • getDataSize

        public long getDataSize()
        Description copied from interface: StorageEngine
        Returns a measure of the total size of the keys and values stored in this storage engine.
        Specified by:
        getDataSize in interface StorageEngine<K,​V>
        Returns:
        size of the stored keys and values in bytes
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • invalidateCache

        public void invalidateCache()
        Description copied from interface: StorageEngine
        Invalidate any local key/value caches.

        This is called to indicate the termination of a map write "phase". Caching is permitted within a write operation (i.e. to cache around allocation failures during eviction processes).

        Specified by:
        invalidateCache in interface StorageEngine<K,​V>
      • valueEncoding

        public static int valueEncoding​(long encoding)
      • keyEncoding

        public static int keyEncoding​(long encoding)
      • encoding

        public static long encoding​(int keyEncoding,
                                    int valueEncoding)