From 70347eb439c22e33debeab855548fd67c77b698e Mon Sep 17 00:00:00 2001 From: marcins78 Date: Wed, 9 Jan 2013 17:25:34 +0000 Subject: [PATCH] Session expiry added. --- .../lotro/async/LoggedUserHolder.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java index e7ea2d7cb..b0960384a 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java @@ -11,8 +11,8 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.COOKIE; public class LoggedUserHolder { - private long _loggedUserExpireLength = 1000 * 60 * 10; - private long _expireCheckInterval = 1000 * 60; + private long _loggedUserExpireLength = 1000 * 60 * 10; // 10 minutes session length + private long _expireCheckInterval = 1000 * 60; // check every minute private Map _users = Collections.synchronizedMap(new HashMap()); private Map _lastAccess = Collections.synchronizedMap(new HashMap()); @@ -36,6 +36,7 @@ public class LoggedUserHolder { if (value != null) { String loggedUser = _users.get(value); if (loggedUser != null) { + System.out.println("Update last access"); _lastAccess.put(value, System.currentTimeMillis()); return loggedUser; } @@ -82,23 +83,25 @@ public class LoggedUserHolder { while (true) { _readWriteLock.writeLock().lock(); try { + long currentTime = System.currentTimeMillis(); Iterator> iterator = _lastAccess.entrySet().iterator(); if (iterator.hasNext()) { Map.Entry lastAccess = iterator.next(); - if (lastAccess.getValue() > System.currentTimeMillis() + _loggedUserExpireLength) { + long expireAt = lastAccess.getValue() + _loggedUserExpireLength; + if (expireAt < currentTime) { String userValue = lastAccess.getKey(); _users.remove(userValue); iterator.remove(); } } - try { - Thread.sleep(_expireCheckInterval); - } catch (InterruptedException exp) { - - } } finally { _readWriteLock.writeLock().unlock(); } + try { + Thread.sleep(_expireCheckInterval); + } catch (InterruptedException exp) { + + } } } }