All pastes #19330 Raw Edit

Something

public java v1 · immutable
#19330 ·published 2005-08-04 20:41 UTC
rendered paste body
package org.pravus.frameworks.network.lobby.server.mobile.http;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import org.pravus.frameworks.network.lobby.server.Member;public class LoginTracker implements Runnable {    private HashMap<String, MobileSession> sessions = new HashMap<String, MobileSession>();    private boolean end = false;    private long milliSecondsTillTimeOut;        static long nextId = 0;        public LoginTracker(int timeOut) {        milliSecondsTillTimeOut = timeOut;    }        public synchronized void setTimeOut(long timeOut) {        milliSecondsTillTimeOut = timeOut;    }        public long getTimeOut() {        return milliSecondsTillTimeOut;    }        public static String generateNextId() {        return String.valueOf(nextId++);    }        public void run() {        while(end == false) {            checkForTimeOuts();                        try { Thread.currentThread().sleep(500); } catch (Exception e) { }        }    }        public synchronized void terminate() {        end = true;    }        public synchronized void checkForTimeOuts() {        Date currentTime = new Date();                for (Iterator<MobileSession> i = sessions.values().iterator(); i.hasNext();) {            MobileSession m = i.next();                        long differenceInMinutes = currentTime.getTime() - m.getLastAccessed().getTime() / 1000;                        if (differenceInMinutes >= 1)                i.remove();        }    }        public synchronized String newSession(Member m) {        String id = generateNextId();        MobileSession session = new MobileSession(m, id);                sessions.put(id, session);                return id;    }        public synchronized Member findSession(String sessionId) {        return sessions.get(sessionId).getMember();    }        public synchronized void removeSession(String sessionId) {        sessions.remove(sessionId);    }        public synchronized Collection getMemberList() {        return sessions.values();    }        private class MobileSession {        private Member member;        private Date lastAccessTime = new Date();                public MobileSession(Member m, String sessionId) {            member = m;        }                public Date getLastAccessed() {            return lastAccessTime;        }                public void updateAccessTime() {            lastAccessTime = new Date();        }                public Member getMember() {            return member;        }    }}