diff --git a/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java b/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java index 7d5a8b6..02884fc 100644 --- a/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java +++ b/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java @@ -1,6 +1,7 @@ package dev.brighten.antivpn.api; import dev.brighten.antivpn.AntiVPN; +import dev.brighten.antivpn.utils.EvictingMap; import dev.brighten.antivpn.utils.VPNResponse; import dev.brighten.antivpn.utils.json.JSONException; import lombok.Getter; @@ -15,7 +16,7 @@ import java.util.function.Consumer; public abstract class VPNExecutor { public static ExecutorService threadExecutor = Executors.newSingleThreadExecutor(); - public static final Map responseCache = new HashMap<>(); + public static final Map responseCache = new EvictingMap<>(5000); @Getter private final Set whitelisted = Collections.synchronizedSet(new HashSet<>()); @Getter diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/EvictingMap.java b/Common/src/main/java/dev/brighten/antivpn/utils/EvictingMap.java new file mode 100644 index 0000000..02b8a8c --- /dev/null +++ b/Common/src/main/java/dev/brighten/antivpn/utils/EvictingMap.java @@ -0,0 +1,19 @@ +package dev.brighten.antivpn.utils; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +import java.util.LinkedHashMap; +import java.util.Map; + +@RequiredArgsConstructor +public class EvictingMap extends LinkedHashMap { + + @Getter + private final int size; + + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() >= size; + } +}