forked from TrueCloudLab/frostfs-sdk-java
37 lines
997 B
Java
37 lines
997 B
Java
package info.frostfs.sdk.pool;
|
|
|
|
import info.frostfs.sdk.dto.session.SessionToken;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentMap;
|
|
|
|
public class SessionCache {
|
|
private final ConcurrentMap<String, SessionToken> cache = new ConcurrentHashMap<>();
|
|
private final long tokenDuration;
|
|
private long currentEpoch;
|
|
|
|
public SessionCache(long sessionExpirationDuration) {
|
|
this.tokenDuration = sessionExpirationDuration;
|
|
}
|
|
|
|
public boolean contains(String key) {
|
|
return cache.containsKey(key);
|
|
}
|
|
|
|
public SessionToken tryGetValue(String key) {
|
|
return StringUtils.isBlank(key) ? null : cache.get(key);
|
|
}
|
|
|
|
public void setValue(String key, SessionToken value) {
|
|
if (key != null) {
|
|
cache.put(key, value);
|
|
}
|
|
}
|
|
|
|
public void deleteByPrefix(String prefix) {
|
|
cache.keySet().removeIf(key -> key.startsWith(prefix));
|
|
}
|
|
}
|
|
|
|
|