
io.github.finefuture.dynamic.cache.expiry.ExpiryStrategy Maven / Gradle / Ivy
The newest version!
package io.github.finefuture.dynamic.cache.expiry;
import com.github.benmanes.caffeine.cache.Expiry;
import io.github.finefuture.devkit.core.spi.SpiLoader;
import io.github.finefuture.dynamic.cache.core.KeyAndArgs;
import org.checkerframework.checker.index.qual.NonNegative;
import org.checkerframework.checker.nullness.qual.NonNull;
/**
* Cache expiry strategy
*
* @author longqiang
*/
public class ExpiryStrategy implements Expiry {
private ExpiryProvider expiryProvider;
public ExpiryStrategy() {
expiryProvider = SpiLoader.loadHighestPriorityInstance(ExpiryProvider.class);
}
@Override
public long expireAfterCreate(@NonNull KeyAndArgs key, @NonNull Object value, long currentTime) {
return expiryProvider.getCreateExpire(key.getConfigKey());
}
@Override
public long expireAfterUpdate(@NonNull KeyAndArgs key, @NonNull Object value, long currentTime, @NonNegative long currentDuration) {
return expiryProvider.getUpdateExpire(key.getConfigKey(), currentDuration);
}
@Override
public long expireAfterRead(@NonNull KeyAndArgs key, @NonNull Object value, long currentTime, @NonNegative long currentDuration) {
return expiryProvider.getReadExpire(key.getConfigKey(), currentDuration);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy