Class Async.AsyncExpiry<K,V>
- java.lang.Object
-
- com.github.benmanes.caffeine.cache.Async.AsyncExpiry<K,V>
-
- All Implemented Interfaces:
Expiry<K,java.util.concurrent.CompletableFuture<V>>
,java.io.Serializable
- Enclosing class:
- Async
static final class Async.AsyncExpiry<K,V> extends java.lang.Object implements Expiry<K,java.util.concurrent.CompletableFuture<V>>, java.io.Serializable
An expiry for asynchronous computations. When the value is being loaded this expiry returnsASYNC_EXPIRY
to indicate that the entry should not be evicted due to an expiry constraint. If the value is computed successfully the entry must be reinserted so that the expiration is updated and the expiration timeouts reflect the value once present. The value maximum range is reserved to coordinate the asynchronous life cycle.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) Expiry<K,V>
delegate
private static long
serialVersionUID
-
Constructor Summary
Constructors Constructor Description AsyncExpiry(Expiry<K,V> delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
expireAfterCreate(K key, java.util.concurrent.CompletableFuture<V> future, long currentTime)
Specifies that the entry should be automatically removed from the cache once the duration has elapsed after the entry's creation.long
expireAfterRead(K key, java.util.concurrent.CompletableFuture<V> future, long currentTime, long currentDuration)
Specifies that the entry should be automatically removed from the cache once the duration has elapsed after its last read.long
expireAfterUpdate(K key, java.util.concurrent.CompletableFuture<V> future, long currentTime, long currentDuration)
Specifies that the entry should be automatically removed from the cache once the duration has elapsed after the replacement of its value.(package private) java.lang.Object
writeReplace()
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
-
Method Detail
-
expireAfterCreate
public long expireAfterCreate(K key, java.util.concurrent.CompletableFuture<V> future, long currentTime)
Description copied from interface:Expiry
Specifies that the entry should be automatically removed from the cache once the duration has elapsed after the entry's creation. To indicate no expiration an entry may be given an excessively long period, such asLong#MAX_VALUE
.Note: The
currentTime
is supplied by the configuredTicker
and by default does not relate to system or wall-clock time. When calculating the duration based on a time stamp, the current time should be obtained independently.- Specified by:
expireAfterCreate
in interfaceExpiry<K,V>
- Parameters:
key
- the key represented by this entryfuture
- the value represented by this entrycurrentTime
- the current time, in nanoseconds- Returns:
- the length of time before the entry expires, in nanoseconds
-
expireAfterUpdate
public long expireAfterUpdate(K key, java.util.concurrent.CompletableFuture<V> future, long currentTime, long currentDuration)
Description copied from interface:Expiry
Specifies that the entry should be automatically removed from the cache once the duration has elapsed after the replacement of its value. To indicate no expiration an entry may be given an excessively long period, such asLong#MAX_VALUE
. ThecurrentDuration
may be returned to not modify the expiration time.Note: The
currentTime
is supplied by the configuredTicker
and by default does not relate to system or wall-clock time. When calculating the duration based on a time stamp, the current time should be obtained independently.- Specified by:
expireAfterUpdate
in interfaceExpiry<K,V>
- Parameters:
key
- the key represented by this entryfuture
- the value represented by this entrycurrentTime
- the current time, in nanosecondscurrentDuration
- the current duration, in nanoseconds- Returns:
- the length of time before the entry expires, in nanoseconds
-
expireAfterRead
public long expireAfterRead(K key, java.util.concurrent.CompletableFuture<V> future, long currentTime, long currentDuration)
Description copied from interface:Expiry
Specifies that the entry should be automatically removed from the cache once the duration has elapsed after its last read. To indicate no expiration an entry may be given an excessively long period, such asLong#MAX_VALUE
. ThecurrentDuration
may be returned to not modify the expiration time.Note: The
currentTime
is supplied by the configuredTicker
and by default does not relate to system or wall-clock time. When calculating the duration based on a time stamp, the current time should be obtained independently.- Specified by:
expireAfterRead
in interfaceExpiry<K,V>
- Parameters:
key
- the key represented by this entryfuture
- the value represented by this entrycurrentTime
- the current time, in nanosecondscurrentDuration
- the current duration, in nanoseconds- Returns:
- the length of time before the entry expires, in nanoseconds
-
writeReplace
java.lang.Object writeReplace()
-
-