changes for public server

This commit is contained in:
BetaSteward 2011-05-04 23:18:13 -04:00
parent 1fdc50570f
commit b81938210a
46 changed files with 218 additions and 281 deletions

View file

@ -31,6 +31,7 @@ package mage.server;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import mage.interfaces.MageException;
import org.apache.log4j.Logger;
/**
*
@ -38,6 +39,7 @@ import mage.interfaces.MageException;
*/
public class SessionManager {
private final static Logger logger = Logger.getLogger(SessionManager.class);
private final static SessionManager INSTANCE = new SessionManager();
public static SessionManager getInstance() {
@ -51,24 +53,24 @@ public class SessionManager {
}
public UUID createSession(String userName, UUID clientId) throws MageException {
if (!isNameUsed(userName)) {
Session session = new Session(userName, clientId);
sessions.put(session.getId(), session);
return session.getId();
for (Session session: sessions.values()) {
if (session.getUsername().equals(userName)) {
if (session.getClientId().equals(clientId)) {
logger.info("reconnecting session for " + userName);
return session.getId();
}
else {
throw new MageException("User name already in use");
}
}
}
throw new MageException("User name already in use");
Session session = new Session(userName, clientId);
sessions.put(session.getId(), session);
return session.getId();
}
public void removeSession(UUID sessionId) {
sessions.remove(sessionId);
}
private boolean isNameUsed(String name) {
for (Session session: sessions.values()) {
if (session.getUsername().equals(name))
return true;
}
return false;
}
}