remove stale users after 10 minutes

This commit is contained in:
BetaSteward 2011-07-06 22:50:01 -04:00
parent b4b02d0f68
commit bf2f4e3078
9 changed files with 135 additions and 33 deletions

View file

@ -53,6 +53,7 @@ public class User {
private String sessionId = "";
private String host;
private Date connectionTime = new Date();
private Date lastActivity = new Date();
private UserState userState;
private Map<UUID, GameSession> gameSessions = new HashMap<UUID, GameSession>();
@ -133,6 +134,30 @@ public class User {
fireCallback(new ClientCallback("replayGame", gameId));
}
public void sendPlayerUUID(final UUID gameId, final UUID data) {
lastActivity = new Date();
GameManager.getInstance().sendPlayerUUID(gameId, userId, data);
}
public void sendPlayerString(final UUID gameId, final String data) {
lastActivity = new Date();
GameManager.getInstance().sendPlayerString(gameId, userId, data);
}
public void sendPlayerBoolean(final UUID gameId, final Boolean data) {
lastActivity = new Date();
GameManager.getInstance().sendPlayerBoolean(gameId, userId, data);
}
public void sendPlayerInteger(final UUID gameId, final Integer data) {
lastActivity = new Date();
GameManager.getInstance().sendPlayerInteger(gameId, userId, data);
}
public boolean isExpired(Date expired) {
return userState == UserState.Disconnected && lastActivity.before(expired);
}
private void reconnect() {
for (Entry<UUID, GameSession> entry: gameSessions.entrySet()) {
gameStarted(entry.getValue().getGameId(), entry.getKey());
@ -148,5 +173,11 @@ public class User {
public void removeGame(UUID playerId) {
gameSessions.remove(playerId);
}
public void kill() {
for (Entry<UUID, GameSession> entry: gameSessions.entrySet()) {
entry.getValue().kill();
}
}
}