Class AbstractDelegatingInternalDataContainer<K,V>
- All Implemented Interfaces:
Iterable<InternalCacheEntry<K,
,V>> DataContainer<K,
,V> InternalDataContainer<K,
V>
- Direct Known Subclasses:
SegmentedBoundedOffHeapDataContainer
delegate()
- Since:
- 9.0
- Author:
- wburns
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.infinispan.container.DataContainer
DataContainer.ComputeAction<K,
V> -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addRemovalListener
(Consumer<Iterable<InternalCacheEntry<K, V>>> listener) Adds a listener that is invoked wheneverInternalDataContainer.removeSegments(IntSet)
is invoked providing a way for the listener to see what actual entries were removed from the container.void
addSegments
(IntSet segments) Sets what segments this data container should be using.long
capacity()
Returns the capacity of the underlying container.void
clear()
Removes all entries in the containervoid
Removes entries from the container whose key maps to one of the provided segmentscompute
(int segment, K key, DataContainer.ComputeAction<K, V> action) Same asDataContainer.compute(Object, ComputeAction)
except that the segment of the key can provided to update entries without calculating the segment for the given key.compute
(K key, DataContainer.ComputeAction<K, V> action) Computes the new value for the key.boolean
containsKey
(int segment, Object k) Same asDataContainer.containsKey(Object)
except that the segment of the key can provided to lookup if the entry exists without calculating the segment for the given key.boolean
Tests whether an entry exists in the containerprotected abstract InternalDataContainer
<K, V> delegate()
Same asDataContainer.evict(Object)
except that the segment of the key can provided to remove the entry without calculating the segment for the given key.void
Atomically, it removes the key fromDataContainer
and passivates it to persistence.long
Returns how large the eviction size is currently.void
forEach
(Consumer<? super InternalCacheEntry<K, V>> action) void
Performs the given action for each element of the container that maps to the given set of segments until all elements have been processed or the action throws an exception.void
forEachSegment
(ObjIntConsumer<PeekableTouchableMap<K, V>> segmentMapConsumer) Performs the given consumer for each map inside this container, once for each segment until all maps have been processed or the action throws an exception.Same asDataContainer.get(Object)
except that the segment of the key can provided to lookup entries without calculating the segment for the given keyRetrieves a cached entryboolean
Verify if the container has entries that can expire.iterator()
Same asDataContainer.iterator()
except that only entries that map to the provided segments are returned via the iterator.Same asDataContainer.iterator()
except that is also returns expired entries.iteratorIncludingExpired
(IntSet segments) Same asDataContainer.iteratorIncludingExpired()
except that only entries that map to the provided segments are returned via the iterator.Same asDataContainer.peek(Object)
except that the segment of the key can provided to lookup entries without calculating the segment for the given keyRetrieves a cache entry in the same way asDataContainer.get(Object)
} except that it does not update or reorder any of the internal constructs.void
put
(int segment, K k, V v, Metadata metadata, PrivateMetadata internalMetadata, long createdTimestamp, long lastUseTimestamp) Same asDataContainer.put(Object, Object, Metadata)
except that the segment of the key can provided to write/lookup entries without calculating the segment for the given key.void
Puts an entry in the cache along with metadata adding information such lifespan of entry, max idle time, version information...etc.Same asDataContainer.remove(Object)
except that the segment of the key can provided to remove the entry without calculating the segment for the given key.Removes an entry from the cachevoid
removeRemovalListener
(Object listener) Removes a previously registered listener viaInternalDataContainer.addRemovalListener(Consumer)
.void
removeSegments
(IntSet segments) Removes and un-associates the given segments.void
resize
(long newSize) Resizes the capacity of the underlying container.int
size()
int
Returns how many entries are present in the data container that map to the given segments without counting entries that are currently expired.int
int
sizeIncludingExpired
(IntSet segments) Returns how many entries are present in the data container that map to the given segments including any entries that may be expiredspliterator
(IntSet segments) Same asDataContainer.spliterator()
except that only entries that map to the provided segments are returned via this spliterator.Same asDataContainer.spliterator()
except that is also returns expired entries.spliteratorIncludingExpired
(IntSet segments) Same asDataContainer.spliteratorIncludingExpired()
except that only entries that map to the provided segments are returned via this spliterator.boolean
Touches an entry in the data container.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.infinispan.container.impl.InternalDataContainer
cleanUp, publisher, publisher
-
Constructor Details
-
AbstractDelegatingInternalDataContainer
public AbstractDelegatingInternalDataContainer()
-
-
Method Details
-
delegate
-
get
Description copied from interface:InternalDataContainer
Retrieves a cached entryWe should only ever be using the non blocking variant
InternalDataContainer.peek(int, Object)
in Infinispan- Specified by:
get
in interfaceDataContainer<K,
V> - Specified by:
get
in interfaceInternalDataContainer<K,
V> - Parameters:
k
- key under which entry is stored- Returns:
- entry, if it exists and has not expired, or null if not
-
get
Description copied from interface:InternalDataContainer
Same asDataContainer.get(Object)
except that the segment of the key can provided to lookup entries without calculating the segment for the given key- Specified by:
get
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keyk
- key under which entry is stored- Returns:
- entry, if it exists and has not expired, or null if not
-
peek
Description copied from interface:DataContainer
Retrieves a cache entry in the same way asDataContainer.get(Object)
} except that it does not update or reorder any of the internal constructs. I.e., expiration does not happen, and in the case of the LRU container, the entry is not moved to the end of the chain. This method should be used instead ofDataContainer.get(Object)
} when called while iterating through the data container using methods likeDataContainer.iterator()
to avoid changing the underlying collection's order.- Specified by:
peek
in interfaceDataContainer<K,
V> - Parameters:
k
- key under which entry is stored- Returns:
- entry, if it exists, or null if not
-
peek
Description copied from interface:InternalDataContainer
Same asDataContainer.peek(Object)
except that the segment of the key can provided to lookup entries without calculating the segment for the given key- Specified by:
peek
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keyk
- key under which entry is stored- Returns:
- entry, if it exists, or null if not
-
touch
Description copied from interface:InternalDataContainer
Touches an entry in the data container. This will update the last access time of the entry as well as count this as a access for eviction based recency.- Specified by:
touch
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keyk
- key under which entry is storedcurrentTimeMillis
- the current time in milliseconds to touch the entry with- Returns:
- true if the entry timestamp was touched
-
put
Description copied from interface:DataContainer
Puts an entry in the cache along with metadata adding information such lifespan of entry, max idle time, version information...etc.- Specified by:
put
in interfaceDataContainer<K,
V> - Parameters:
k
- key under which to store entryv
- value to storemetadata
- metadata of the entry
-
put
public void put(int segment, K k, V v, Metadata metadata, PrivateMetadata internalMetadata, long createdTimestamp, long lastUseTimestamp) Description copied from interface:InternalDataContainer
Same asDataContainer.put(Object, Object, Metadata)
except that the segment of the key can provided to write/lookup entries without calculating the segment for the given key.Note: The timestamps ignored if the entry already exists in the data container.
- Specified by:
put
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keyk
- key under which to store entryv
- value to storemetadata
- metadata of the entryinternalMetadata
-createdTimestamp
- creation timestamp, or-1
to use the current timelastUseTimestamp
- last use timestamp, or-1
to use the current time
-
containsKey
Description copied from interface:DataContainer
Tests whether an entry exists in the container- Specified by:
containsKey
in interfaceDataContainer<K,
V> - Parameters:
k
- key to test- Returns:
- true if entry exists and has not expired; false otherwise
-
containsKey
Description copied from interface:InternalDataContainer
Same asDataContainer.containsKey(Object)
except that the segment of the key can provided to lookup if the entry exists without calculating the segment for the given key.- Specified by:
containsKey
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keyk
- key under which entry is stored- Returns:
- true if entry exists and has not expired; false otherwise
-
remove
Description copied from interface:DataContainer
Removes an entry from the cache- Specified by:
remove
in interfaceDataContainer<K,
V> - Parameters:
k
- key to remove- Returns:
- entry removed, or null if it didn't exist or had expired
-
remove
Description copied from interface:InternalDataContainer
Same asDataContainer.remove(Object)
except that the segment of the key can provided to remove the entry without calculating the segment for the given key.- Specified by:
remove
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keyk
- key to remove- Returns:
- entry removed, or null if it didn't exist or had expired
-
evict
Description copied from interface:DataContainer
Atomically, it removes the key fromDataContainer
and passivates it to persistence. The passivation must be done by invoking the methodPassivationManager.passivateAsync(InternalCacheEntry)
.- Specified by:
evict
in interfaceDataContainer<K,
V> - Parameters:
key
- The key to evict.
-
evict
Description copied from interface:InternalDataContainer
Same asDataContainer.evict(Object)
except that the segment of the key can provided to remove the entry without calculating the segment for the given key.- Specified by:
evict
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keykey
- The key to evict.
-
compute
Description copied from interface:DataContainer
Computes the new value for the key. SeeDataContainer.ComputeAction.compute(Object, org.infinispan.container.entries.InternalCacheEntry, InternalEntryFactory)
.Note the entry provided to
DataContainer.ComputeAction
may be expired as these entries are not filtered as many other methods do.- Specified by:
compute
in interfaceDataContainer<K,
V> - Parameters:
key
- The key.action
- The action that will compute the new value.- Returns:
- The
InternalCacheEntry
associated to the key.
-
compute
Description copied from interface:InternalDataContainer
Same asDataContainer.compute(Object, ComputeAction)
except that the segment of the key can provided to update entries without calculating the segment for the given key.- Specified by:
compute
in interfaceInternalDataContainer<K,
V> - Parameters:
segment
- segment for the keykey
- The key.action
- The action that will compute the new value.- Returns:
- The
InternalCacheEntry
associated to the key.
-
clear
public void clear()Description copied from interface:DataContainer
Removes all entries in the container- Specified by:
clear
in interfaceDataContainer<K,
V>
-
clear
Description copied from interface:InternalDataContainer
Removes entries from the container whose key maps to one of the provided segments- Specified by:
clear
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments of entries to remove
-
spliterator
Description copied from interface:DataContainer
This spliterator only returns entries that are not expired, however it will not remove them while doing so.
- Specified by:
spliterator
in interfaceDataContainer<K,
V> - Specified by:
spliterator
in interfaceIterable<K>
- Returns:
- spliterator that doesn't produce expired entries
-
spliterator
Description copied from interface:InternalDataContainer
Same asDataContainer.spliterator()
except that only entries that map to the provided segments are returned via this spliterator. The spliterator will not return expired entries.- Specified by:
spliterator
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments of entries to return- Returns:
- spliterator containing entries mapping to those segments that aren't expired
-
spliteratorIncludingExpired
Description copied from interface:DataContainer
Same asDataContainer.spliterator()
except that is also returns expired entries.- Specified by:
spliteratorIncludingExpired
in interfaceDataContainer<K,
V> - Returns:
- spliterator that returns all entries including expired ones
-
spliteratorIncludingExpired
Description copied from interface:InternalDataContainer
Same asDataContainer.spliteratorIncludingExpired()
except that only entries that map to the provided segments are returned via this spliterator. The spliterator will return expired entries as well.- Specified by:
spliteratorIncludingExpired
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments of entries to use- Returns:
- spliterator containing entries mapping to those segments that could be expired
-
iterator
Description copied from interface:DataContainer
This iterator only returns entries that are not expired, however it will not remove them while doing so.
-
iterator
Description copied from interface:InternalDataContainer
Same asDataContainer.iterator()
except that only entries that map to the provided segments are returned via the iterator. The iterator will not return expired entries.- Specified by:
iterator
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments of entries to use- Returns:
- iterator that returns all entries mapped to the given segments
-
iteratorIncludingExpired
Description copied from interface:DataContainer
Same asDataContainer.iterator()
except that is also returns expired entries.- Specified by:
iteratorIncludingExpired
in interfaceDataContainer<K,
V> - Returns:
- iterator that returns all entries including expired ones
-
iteratorIncludingExpired
Description copied from interface:InternalDataContainer
Same asDataContainer.iteratorIncludingExpired()
except that only entries that map to the provided segments are returned via the iterator. The iterator can return expired entries.- Specified by:
iteratorIncludingExpired
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments of entries to use- Returns:
- iterator that returns all entries mapped to the given segments that could be expired
-
forEach
-
forEach
Description copied from interface:InternalDataContainer
Performs the given action for each element of the container that maps to the given set of segments until all elements have been processed or the action throws an exception. Unless otherwise specified by the implementing class, actions are performed in the order of iteration (if an iteration order is specified). Exceptions thrown by the action are relayed to the caller.- Specified by:
forEach
in interfaceInternalDataContainer<K,
V> - Parameters:
action
- The action to be performed for each element
-
forEachSegment
Description copied from interface:InternalDataContainer
Performs the given consumer for each map inside this container, once for each segment until all maps have been processed or the action throws an exception. Exceptions thrown by the action are relayed to the caller. The consumer will be provided with the segment as well that maps to the given segment.- Specified by:
forEachSegment
in interfaceInternalDataContainer<K,
V> - Parameters:
segmentMapConsumer
- The action to be performed for each element map
-
size
public int size()- Specified by:
size
in interfaceDataContainer<K,
V> - Returns:
- count of the number of entries in the container excluding expired entries
-
size
Description copied from interface:InternalDataContainer
Returns how many entries are present in the data container that map to the given segments without counting entries that are currently expired.- Specified by:
size
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments of entries to count- Returns:
- count of the number of entries in the container excluding expired entries
-
sizeIncludingExpired
public int sizeIncludingExpired()- Specified by:
sizeIncludingExpired
in interfaceDataContainer<K,
V> - Returns:
- count of the number of entries in the container including expired entries
-
sizeIncludingExpired
Description copied from interface:InternalDataContainer
Returns how many entries are present in the data container that map to the given segments including any entries that may be expired- Specified by:
sizeIncludingExpired
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments of entries to count- Returns:
- count of the number of entries in the container including expired entries
-
addSegments
Description copied from interface:InternalDataContainer
Sets what segments this data container should be using. Already associated segments are unaffected by this and takes a union of existing and new segments.- Specified by:
addSegments
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments to associate with this container
-
removeSegments
Description copied from interface:InternalDataContainer
Removes and un-associates the given segments. This will notify any listeners registered viaInternalDataContainer.addRemovalListener(Consumer)
of entries that were removed due to no longer being associated with this container. There is no guarantee if the consumer is invoked once or multiple times for a given group of segments and could be in any order.When this method is invoked an implementation is free to remove any entries that don't map to segments currently associated with this container. Note that entries that were removed due to their segments never being associated with this container do not notify listeners registered via
InternalDataContainer.addRemovalListener(Consumer)
.- Specified by:
removeSegments
in interfaceInternalDataContainer<K,
V> - Parameters:
segments
- segments that should no longer be associated with this container
-
addRemovalListener
Description copied from interface:InternalDataContainer
Adds a listener that is invoked wheneverInternalDataContainer.removeSegments(IntSet)
is invoked providing a way for the listener to see what actual entries were removed from the container.- Specified by:
addRemovalListener
in interfaceInternalDataContainer<K,
V> - Parameters:
listener
- listener that invoked of removed entries
-
removeRemovalListener
Description copied from interface:InternalDataContainer
Removes a previously registered listener viaInternalDataContainer.addRemovalListener(Consumer)
.- Specified by:
removeRemovalListener
in interfaceInternalDataContainer<K,
V> - Parameters:
listener
- the listener to remove
-
capacity
public long capacity()Description copied from interface:DataContainer
Returns the capacity of the underlying container. This is only supported if the container is bounded. AnUnsupportedOperationException
is thrown otherwise.- Specified by:
capacity
in interfaceDataContainer<K,
V> - Returns:
-
evictionSize
public long evictionSize()Description copied from interface:DataContainer
Returns how large the eviction size is currently. This is only supported if the container is bounded. AnUnsupportedOperationException
is thrown otherwise. This value will always be lower than the value returned fromDataContainer.capacity()
- Specified by:
evictionSize
in interfaceDataContainer<K,
V> - Returns:
- how large the counted eviction is
-
resize
public void resize(long newSize) Description copied from interface:DataContainer
Resizes the capacity of the underlying container. This is only supported if the container is bounded. AnUnsupportedOperationException
is thrown otherwise.- Specified by:
resize
in interfaceDataContainer<K,
V> - Parameters:
newSize
- the new size
-
hasExpirable
public boolean hasExpirable()Description copied from interface:InternalDataContainer
Verify if the container has entries that can expire. This is __not__ the same thing as verifying for expired entries. This method can return true even if entries are not expired.- Specified by:
hasExpirable
in interfaceInternalDataContainer<K,
V> - Returns:
- true if any entry can expire, false otherwise.
-