Add cache cleanup
This commit is contained in:
parent
340fed098f
commit
413800515f
@ -5,12 +5,16 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public final class FlexLib {
|
||||
|
||||
private final String token;
|
||||
private final Logger logger;
|
||||
private final Timer timer;
|
||||
private final TimerTask timerTask;
|
||||
private final GraphQLApi graphQLApi;
|
||||
private final Set<FlexLibAdapter> eventListeners = new HashSet<>();
|
||||
private WebSocketClient webSocketClient;
|
||||
@ -32,11 +36,11 @@ public final class FlexLib {
|
||||
* @param token token for FlexPlex API
|
||||
*/
|
||||
public FlexLib(final String token, final Logger logger) {
|
||||
logger.info("Initializing FlexLib");
|
||||
this.token = token;
|
||||
this.logger = logger;
|
||||
this.logger.info("Initializing FlexLib");
|
||||
|
||||
this.graphQLApi = new GraphQLApi(this, "https://api.flexplex.fi/graphql");
|
||||
|
||||
new FlexLibAdapterImpl(this);
|
||||
|
||||
try {
|
||||
@ -44,6 +48,17 @@ public final class FlexLib {
|
||||
} catch (final IOException e) {
|
||||
this.logger.warning("Failed to initialize FlexLib WebSocket client");
|
||||
}
|
||||
|
||||
this.timer = new Timer();
|
||||
this.timerTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
final long removeTime = System.currentTimeMillis() - 10_800_000;
|
||||
playerFriends.entrySet().removeIf(entry -> entry.getValue().getLastUsed() < removeTime);
|
||||
webSocketClient.connect();
|
||||
}
|
||||
};
|
||||
this.timer.schedule(this.timerTask, 0, 60_000);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,9 +106,13 @@ public final class FlexLib {
|
||||
* Disableds FlexLib API instance
|
||||
*/
|
||||
public void disable() {
|
||||
this.timerTask.cancel();
|
||||
this.timer.cancel();
|
||||
|
||||
if (this.webSocketClient != null) {
|
||||
this.webSocketClient.disable();
|
||||
}
|
||||
|
||||
this.eventListeners.clear();
|
||||
this.playerFriends.clear();
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ public final class PlayerFriends {
|
||||
private final Set<UUID> friends = new HashSet<>();
|
||||
private final Set<UUID> incomingFriendRequests = new HashSet<>();
|
||||
private final Set<UUID> outcomingFriendRequests = new HashSet<>();
|
||||
private long lastUsed = System.currentTimeMillis();
|
||||
|
||||
protected PlayerFriends(final GraphQLApi graphQLApi, final String token, final String player) throws IOException {
|
||||
this.graphQLApi = graphQLApi;
|
||||
@ -27,6 +28,10 @@ public final class PlayerFriends {
|
||||
}
|
||||
}
|
||||
|
||||
protected long getLastUsed() {
|
||||
return this.lastUsed;
|
||||
}
|
||||
|
||||
protected boolean update() {
|
||||
final Optional<JsonObject> result = this.graphQLApi.execute(
|
||||
"query{" +
|
||||
@ -66,6 +71,7 @@ public final class PlayerFriends {
|
||||
* @return friends
|
||||
*/
|
||||
public Set<UUID> getFriends() {
|
||||
this.lastUsed = System.currentTimeMillis();
|
||||
return this.friends;
|
||||
}
|
||||
|
||||
@ -74,6 +80,7 @@ public final class PlayerFriends {
|
||||
* @return friend requests
|
||||
*/
|
||||
public Set<UUID> getIncomingFriendRequests() {
|
||||
this.lastUsed = System.currentTimeMillis();
|
||||
return this.incomingFriendRequests;
|
||||
}
|
||||
|
||||
@ -82,6 +89,7 @@ public final class PlayerFriends {
|
||||
* @return friend requests
|
||||
*/
|
||||
public Set<UUID> getOutcomingFriendRequests() {
|
||||
this.lastUsed = System.currentTimeMillis();
|
||||
return this.outcomingFriendRequests;
|
||||
}
|
||||
|
||||
@ -92,6 +100,7 @@ public final class PlayerFriends {
|
||||
* @return true if was created successfully
|
||||
*/
|
||||
public boolean createFriendRequest(final String player, final String targetPlayer) {
|
||||
this.lastUsed = System.currentTimeMillis();
|
||||
final Optional<JsonObject> result = this.graphQLApi.execute(
|
||||
"mutation{" +
|
||||
"createFriendRequest(" +
|
||||
@ -111,6 +120,7 @@ public final class PlayerFriends {
|
||||
* @return true if was accepted successfully
|
||||
*/
|
||||
public boolean acceptFriendRequest(final String player, final String targetPlayer) {
|
||||
this.lastUsed = System.currentTimeMillis();
|
||||
final Optional<JsonObject> result = this.graphQLApi.execute(
|
||||
"mutation{" +
|
||||
"acceptFriendRequest(" +
|
||||
@ -130,6 +140,7 @@ public final class PlayerFriends {
|
||||
* @return true if was deleted successfully
|
||||
*/
|
||||
public boolean deleteFriend(final String player, final String targetPlayer) {
|
||||
this.lastUsed = System.currentTimeMillis();
|
||||
final Optional<JsonObject> result = this.graphQLApi.execute(
|
||||
"mutation{" +
|
||||
"deleteFriend(" +
|
||||
@ -149,6 +160,7 @@ public final class PlayerFriends {
|
||||
* @return true if was changed successfully
|
||||
*/
|
||||
public boolean setFriendRequestsEnabled(final String player, final boolean enabled) {
|
||||
this.lastUsed = System.currentTimeMillis();
|
||||
final Optional<JsonObject> result = this.graphQLApi.execute(
|
||||
"mutation{" +
|
||||
"updateAcceptFriendRequests(" +
|
||||
|
@ -1,8 +1,6 @@
|
||||
package fi.flexplex.lib;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import com.neovisionaries.ws.client.WebSocket;
|
||||
import com.neovisionaries.ws.client.WebSocketAdapter;
|
||||
@ -12,32 +10,24 @@ import com.neovisionaries.ws.client.WebSocketFactory;
|
||||
public final class WebSocketClient {
|
||||
|
||||
private final FlexLib flexLib;
|
||||
private final Timer timer;
|
||||
private final TimerTask timerTask;
|
||||
private final WebSocket webSocket;
|
||||
|
||||
protected WebSocketClient(final FlexLib flexLib, final String url, final String token) throws IOException {
|
||||
this.flexLib = flexLib;
|
||||
this.webSocket = this.createWebSocket(url, token);
|
||||
this.timer = new Timer();
|
||||
this.timerTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!webSocket.isOpen()) {
|
||||
try {
|
||||
webSocket.connect();
|
||||
} catch (final WebSocketException e) {
|
||||
flexLib.getLogger().warning("WebSocket connection to FlexPlex server failed.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void connect() {
|
||||
if (!webSocket.isOpen()) {
|
||||
try {
|
||||
this.webSocket.connect();
|
||||
} catch (final WebSocketException e) {
|
||||
flexLib.getLogger().warning("WebSocket connection to FlexPlex server failed.");
|
||||
}
|
||||
};
|
||||
this.timer.schedule(this.timerTask, 0, 60_000);
|
||||
}
|
||||
}
|
||||
|
||||
protected void disable() {
|
||||
this.timerTask.cancel();
|
||||
this.timer.cancel();
|
||||
this.webSocket.disconnect();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user