Interface OffHeapEntryFactory

  • All Superinterfaces:
    org.infinispan.container.impl.KeyValueMetadataSizeCalculator<WrappedBytes,​WrappedBytes>
    All Known Implementing Classes:
    OffHeapEntryFactoryImpl

    public interface OffHeapEntryFactory
    extends org.infinispan.container.impl.KeyValueMetadataSizeCalculator<WrappedBytes,​WrappedBytes>
    Factory that can create InternalCacheEntry objects that use off-heap heap memory. These are stored by a long to symbolize the memory address.
    Since:
    9.0
    Author:
    wburns
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      long calculateSize​(WrappedBytes key, WrappedBytes value, Metadata metadata)
      Method used to calculate how much memory in size the key, value and metadata use.
      long create​(WrappedBytes key, WrappedBytes value, Metadata metadata)
      Creates an off heap entry using the provided key value and metadata
      boolean equalsKey​(long address, WrappedBytes wrappedBytes)
      Returns whether the given key as bytes is the same key as the key stored in the entry for the given address.
      InternalCacheEntry<WrappedBytes,​WrappedBytes> fromMemory​(long address)
      Create an entry from the off heap pointer
      int getHashCode​(long address)
      Returns the hashCode of the address.
      byte[] getKey​(long address)
      Returns the key of the address.
      long getNext​(long address)
      Returns the address to the next linked pointer if there is one for this bucket or 0 if there isn't one
      long getSize​(long address, boolean includeAllocationOverhead)
      Returns how many bytes in memory this address location uses assuming it is an InternalCacheEntry.
      boolean isExpired​(long address)
      Returns whether entry is expired or not.
      void setNext​(long address, long value)
      Called to update the next pointer index when a collision occurs requiring a linked list within the entries themselves
    • Method Detail

      • create

        long create​(WrappedBytes key,
                    WrappedBytes value,
                    Metadata metadata)
        Creates an off heap entry using the provided key value and metadata
        Parameters:
        key - the key to use
        value - the value to use
        metadata - the metadata to use
        Returns:
        the address of where the entry was created
      • getSize

        long getSize​(long address,
                     boolean includeAllocationOverhead)
        Returns how many bytes in memory this address location uses assuming it is an InternalCacheEntry.
        Parameters:
        address - the address of the entry
        includeAllocationOverhead - if true, align to 8 bytes and add 16 bytes allocation overhead
        Returns:
        how many bytes this address was estimated to be
      • getNext

        long getNext​(long address)
        Returns the address to the next linked pointer if there is one for this bucket or 0 if there isn't one
        Parameters:
        address - the address of the entry
        Returns:
        the next address entry for this bucket or 0
      • setNext

        void setNext​(long address,
                     long value)
        Called to update the next pointer index when a collision occurs requiring a linked list within the entries themselves
        Parameters:
        address - the address of the entry to update
        value - the value of the linked node to set
      • getHashCode

        int getHashCode​(long address)
        Returns the hashCode of the address. This
        Parameters:
        address - the address of the entry
        Returns:
        the has code of the entry
      • getKey

        byte[] getKey​(long address)
        Returns the key of the address.
        Parameters:
        address - the address of the entry
        Returns:
        the bytes for the key
      • fromMemory

        InternalCacheEntry<WrappedBytes,​WrappedBytes> fromMemory​(long address)
        Create an entry from the off heap pointer
        Parameters:
        address - the address of the entry to read
        Returns:
        the entry created on heap from off heap
      • equalsKey

        boolean equalsKey​(long address,
                          WrappedBytes wrappedBytes)
        Returns whether the given key as bytes is the same key as the key stored in the entry for the given address.
        Parameters:
        address - the address of the entry's key to check
        wrappedBytes - the key to check equality with
        Returns:
        whether or not the keys are equal
      • isExpired

        boolean isExpired​(long address)
        Returns whether entry is expired or not.
        Parameters:
        address - the address of the entry's key to check
        Returns:
        true if the entry is expired, false otherwise
      • calculateSize

        long calculateSize​(WrappedBytes key,
                           WrappedBytes value,
                           Metadata metadata)
        Method used to calculate how much memory in size the key, value and metadata use.
        Specified by:
        calculateSize in interface org.infinispan.container.impl.KeyValueMetadataSizeCalculator<WrappedBytes,​WrappedBytes>
        Parameters:
        key - The key for this entry to be used in size calculation
        value - The value for this entry to be used in size calculation
        metadata - The metadata for this entry to be used in size calculation
        Returns:
        The size approximately in memory the key, value and metadata use.