Package org.infinispan.container.offheap
Interface OffHeapEntryFactory
- All Superinterfaces:
KeyValueMetadataSizeCalculator<WrappedBytes,
WrappedBytes>
- All Known Implementing Classes:
OffHeapEntryFactoryImpl
public interface OffHeapEntryFactory
extends 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
Modifier and TypeMethodDescriptiondefault long
calculateSize
(WrappedBytes key, WrappedBytes value, Metadata metadata) Method used to calculate how much memory in size the key, value and metadata use.long
calculateSize
(WrappedBytes key, WrappedBytes value, Metadata metadata, PrivateMetadata internalMetadata) Method used to calculate how much memory in size the key, value, metadata and internal metadata use.long
create
(WrappedBytes key, int hashCode, InternalCacheEntry<WrappedBytes, WrappedBytes> ice) Creates an off-heap entry using the provided key value and metadatadefault 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.boolean
equalsKey
(long address, WrappedBytes wrappedBytes, int hashCode) Returns whether the given key as bytes is the same key as the key stored in the entry for the given address.fromMemory
(long address) Create an entry from the off-heap pointerint
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 onelong
getSize
(long address, boolean includeAllocationOverhead) Returns how many bytes in memory this address location uses assuming it is anInternalCacheEntry
.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 themselveslong
updateMaxIdle
(long address, long accessTime) Update max idle time for an entry.
-
Method Details
-
create
Creates an off-heap entry using the provided key value and metadata- Parameters:
key
- the key to usehashCode
- the hashCode of the keyice
- the internal entry 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 anInternalCacheEntry
.- Parameters:
address
- the address of the entryincludeAllocationOverhead
- 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 updatevalue
- 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
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
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 checkwrappedBytes
- the key to check equality with- Returns:
- whether or not the keys are equal
-
equalsKey
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 checkwrappedBytes
- the key to check equality withhashCode
- the hashCode of the key- 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
Method used to calculate how much memory in size the key, value and metadata use.- Specified by:
calculateSize
in interfaceKeyValueMetadataSizeCalculator<WrappedBytes,
WrappedBytes> - Parameters:
key
- The key for this entry to be used in size calculationvalue
- The value for this entry to be used in size calculationmetadata
- The metadata for this entry to be used in size calculation- Returns:
- The size approximately in memory the key, value and metadata use.
-
calculateSize
long calculateSize(WrappedBytes key, WrappedBytes value, Metadata metadata, PrivateMetadata internalMetadata) Method used to calculate how much memory in size the key, value, metadata and internal metadata use.- Specified by:
calculateSize
in interfaceKeyValueMetadataSizeCalculator<WrappedBytes,
WrappedBytes> - Parameters:
key
- The key for this entry to be used in size calculationvalue
- The value for this entry to be used in size calculationmetadata
- The metadata for this entry to be used in size calculationinternalMetadata
- The internal metadata for this entry to be used in size calculation- Returns:
- The size approximately in memory the key, value and metadata use.
-
updateMaxIdle
long updateMaxIdle(long address, long accessTime) Update max idle time for an entry. This method will try to do an in place update of the access time, however if the new resulting value cannot fit it will allocate a new block of memory. The caller should free the old address in this case.- Parameters:
address
- the address of the entry's to updateaccessTime
- the timestamp to set for max idle access time (must be in milliseconds)- Returns:
- address of the new entry to use or 0 if the same one can be reused
-