forked from External/mage
[load] one place server ping
This commit is contained in:
parent
e62f06cc54
commit
a746ca680b
8 changed files with 61 additions and 8 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue