[load] one place server ping

This commit is contained in:
Loki 2012-05-04 22:49:04 +04:00
parent e62f06cc54
commit a746ca680b
8 changed files with 61 additions and 8 deletions

View file

@ -248,6 +248,11 @@ public class MageServerImpl implements MageServer {
}
return null;
}
@Override
public boolean ping(String sessionId) {
return SessionManager.getInstance().extendUserSession(sessionId);
}
@Override
public void deregisterClient(final String sessionId) throws MageException {

View file

@ -28,19 +28,17 @@
package mage.server;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import mage.MageException;
import mage.players.net.UserData;
import mage.players.net.UserGroup;
import mage.server.services.LogKeys;
import mage.server.services.LogService;
import mage.server.services.impl.LogServiceImpl;
import mage.view.UserDataView;
import org.apache.log4j.Logger;
import org.jboss.remoting.callback.InvokerCallbackHandler;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
*
* @author BetaSteward_at_googlemail.com
@ -148,4 +146,11 @@ public class SessionManager {
}
return null;
}
public boolean extendUserSession(String sessionId) {
if (sessions.containsKey(sessionId)) {
return UserManager.getInstance().extendUserSession(sessions.get(sessionId).getUserId());
}
return false;
}
}

View file

@ -177,6 +177,10 @@ public class User {
lastActivity = new Date();
GameManager.getInstance().sendPlayerInteger(gameId, userId, data);
}
public void updateLastActivity() {
lastActivity = new Date();
}
public boolean isExpired(Date expired) {
return /*userState == UserState.Disconnected && */ lastActivity.before(expired);

View file

@ -124,13 +124,21 @@ public class UserManager {
users.remove(userId);
}
}
public boolean extendUserSession(UUID userId) {
if (users.containsKey(userId)) {
users.get(userId).updateLastActivity();
return true;
}
return false;
}
private void checkExpired() {
Calendar expired = Calendar.getInstance();
expired.add(Calendar.MINUTE, -2) ;
expired.add(Calendar.MINUTE, -3) ;
for (User user: users.values()) {
if (user.isExpired(expired.getTime())) {
logger.info("user session expired " + user.getId());
logger.info(user.getName() + " session expired " + user.getId());
user.kill();
users.remove(user.getId());
}