mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 13:02:06 -08:00
Backed out changeset: b5d9cea65b73
This commit is contained in:
parent
ab599dd335
commit
92d42c16b5
7 changed files with 20 additions and 105 deletions
|
|
@ -70,7 +70,7 @@ public class ChatManager {
|
|||
chatSessions.get(chatId).broadcast(userName, message, color);
|
||||
}
|
||||
|
||||
public void removeSession(UUID sessionId) {
|
||||
void removeSession(UUID sessionId) {
|
||||
for (ChatSession chat: chatSessions.values()) {
|
||||
chat.kill(sessionId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ import mage.game.tournament.TournamentOptions;
|
|||
import mage.interfaces.Server;
|
||||
import mage.interfaces.ServerState;
|
||||
import mage.interfaces.callback.ClientCallback;
|
||||
import mage.server.Session;
|
||||
import mage.server.game.DeckValidatorFactory;
|
||||
import mage.server.draft.DraftManager;
|
||||
import mage.server.game.GameFactory;
|
||||
|
|
@ -106,16 +105,6 @@ public class ServerImpl extends RemoteServer implements Server {
|
|||
SessionManager.getInstance().getSession(sessionId).ack(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ping(UUID sessionId) {
|
||||
Session session = SessionManager.getInstance().getSession(sessionId);
|
||||
if (session != null) {
|
||||
session.ping();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID registerClient(String userName, UUID clientId, MageVersion version) throws MageException, RemoteException {
|
||||
|
||||
|
|
@ -252,8 +241,8 @@ public class ServerImpl extends RemoteServer implements Server {
|
|||
Session session = SessionManager.getInstance().getSession(sessionId);
|
||||
if (session != null) {
|
||||
session.kill();
|
||||
logger.info("Client deregistered ...");
|
||||
}
|
||||
logger.info("Client deregistered ...");
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
package mage.server;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.logging.Level;
|
||||
import java.util.UUID;
|
||||
import mage.cards.decks.Deck;
|
||||
|
|
@ -51,7 +50,6 @@ public class Session {
|
|||
private String username;
|
||||
private int messageId = 0;
|
||||
private String ackMessage;
|
||||
private long lastPing;
|
||||
private final CallbackServerSession callback = new CallbackServerSession();
|
||||
|
||||
public Session(String userName, UUID clientId) {
|
||||
|
|
@ -139,12 +137,4 @@ public class Session {
|
|||
return username;
|
||||
}
|
||||
|
||||
public void ping() {
|
||||
this.lastPing = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public boolean stillAlive() {
|
||||
return (System.currentTimeMillis() - lastPing) < 60000;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,9 +30,6 @@ package mage.server;
|
|||
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import mage.interfaces.MageException;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
|
@ -44,20 +41,15 @@ public class SessionManager {
|
|||
|
||||
private final static Logger logger = Logger.getLogger(SessionManager.class);
|
||||
private final static SessionManager INSTANCE = new SessionManager();
|
||||
private static ScheduledExecutorService sessionExecutor;
|
||||
|
||||
public static SessionManager getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
protected SessionManager() {
|
||||
sessionExecutor = Executors.newScheduledThreadPool(1);
|
||||
sessionExecutor.scheduleWithFixedDelay(new SessionChecker(), 30, 10, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
private ConcurrentHashMap<UUID, Session> sessions = new ConcurrentHashMap<UUID, Session>();
|
||||
|
||||
public Session getSession(UUID sessionId) {
|
||||
if (sessions == null || sessionId == null) return null;
|
||||
return sessions.get(sessionId);
|
||||
}
|
||||
|
||||
|
|
@ -82,24 +74,5 @@ public class SessionManager {
|
|||
public void removeSession(UUID sessionId) {
|
||||
sessions.remove(sessionId);
|
||||
}
|
||||
|
||||
public void checkSessions() {
|
||||
for (Session session: sessions.values()) {
|
||||
if (!session.stillAlive()) {
|
||||
logger.info("Client for user " + session.getUsername() + " timed out - releasing resources");
|
||||
session.kill();
|
||||
sessions.remove(session.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class SessionChecker implements Runnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
checkSessions();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue