All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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