summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/serversession/ServerSessionManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/serversession/ServerSessionManager.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/serversession/ServerSessionManager.java37
1 files changed, 13 insertions, 24 deletions
diff --git a/src/main/java/org/openslx/imagemaster/serversession/ServerSessionManager.java b/src/main/java/org/openslx/imagemaster/serversession/ServerSessionManager.java
index 49e9ebe..4171ea4 100644
--- a/src/main/java/org/openslx/imagemaster/serversession/ServerSessionManager.java
+++ b/src/main/java/org/openslx/imagemaster/serversession/ServerSessionManager.java
@@ -4,22 +4,20 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.TimeUnit;
-import org.apache.log4j.Logger;
-import org.openslx.imagemaster.session.SessionManager;
-import org.openslx.imagemaster.thrift.iface.ServerSessionData;
+import org.openslx.bwlp.thrift.iface.ServerSessionData;
import org.openslx.imagemaster.util.Hash;
+import org.openslx.util.QuickTimer;
+import org.openslx.util.QuickTimer.Task;
/**
* Manages all server sessions and kicks timed out sessions.
*/
public class ServerSessionManager
{
- private static Logger log = Logger.getLogger( SessionManager.class );
-
// Map of currently known sessions
private static final Map<String, ServerSession> serverSessions = new LinkedHashMap<String, ServerSession>();
- private static final Thread gcThread;
public static ServerSessionData addSession( ServerSession serverSession )
{
@@ -45,30 +43,21 @@ public class ServerSessionManager
}
static {
- gcThread = new Thread( new Runnable() {
-
+ QuickTimer.scheduleAtFixedDelay( new Task() {
@Override
- public void run()
+ public void fire()
{
- for ( ;; ) {
- try {
- Thread.sleep( 1800L * 1000L );
- } catch ( InterruptedException e ) {
- }
- synchronized ( serverSessions ) {
- Iterator<ServerSession> it = serverSessions.values().iterator();
- while ( it.hasNext() ) {
- final ServerSession s = it.next();
- if ( s.timedOut() ) {
- log.debug( "Removing old session of " + s.getOrganization() );
- it.remove();
- }
+ synchronized ( serverSessions ) {
+ Iterator<ServerSession> it = serverSessions.values().iterator();
+ while ( it.hasNext() ) {
+ final ServerSession s = it.next();
+ if ( s.timedOut() ) {
+ it.remove();
}
}
}
}
- } );
- gcThread.start();
+ }, 911, TimeUnit.MINUTES.toMillis( 14 ) );
}
}