forked from External/mage
changes for public server
This commit is contained in:
parent
1fdc50570f
commit
b81938210a
46 changed files with 218 additions and 281 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue