* Some more changes to user disconnect handling.

This commit is contained in:
LevelX2 2017-08-16 07:51:48 +02:00
parent a3dd6f6956
commit 8ab9abb8e8
3 changed files with 10 additions and 5 deletions

View file

@ -1440,7 +1440,7 @@ public class SessionImpl implements Session {
@Override @Override
public boolean endUserSession(String userSessionId) { public boolean endUserSession(String userSessionId) {
try { try {
if (JOptionPane.showConfirmDialog(null, "Are you sure you mean to mute userSessionId " + userSessionId + '?', "WARNING", if (JOptionPane.showConfirmDialog(null, "Are you sure you mean to end userSessionId " + userSessionId + '?', "WARNING",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
if (isConnected()) { if (isConnected()) {
server.endUserSession(sessionId, userSessionId); server.endUserSession(sessionId, userSessionId);

View file

@ -4,9 +4,9 @@ package mage.server;
* *
* @author LevelX2 * @author LevelX2
*/ */
public enum DisconnectReason { public enum DisconnectReason {
LostConnection(" has lost connection"), LostConnection(" has lost connection"),
BecameInactive(" has become inactive"),
Disconnected(" has left XMage"), Disconnected(" has left XMage"),
CleaningUp(" [cleaning up]"), CleaningUp(" [cleaning up]"),
ConnectingOtherInstance(" reconnected and replaced still active old session"), ConnectingOtherInstance(" reconnected and replaced still active old session"),
@ -15,11 +15,12 @@ public enum DisconnectReason {
Undefined(""); Undefined("");
String message; String message;
DisconnectReason(String message){
DisconnectReason(String message) {
this.message = message; this.message = message;
} }
public String getMessage(){ public String getMessage() {
return message; return message;
} }
} }

View file

@ -174,8 +174,12 @@ public enum UserManager {
calendarRemove.add(Calendar.MINUTE, -8); calendarRemove.add(Calendar.MINUTE, -8);
List<User> toRemove = new ArrayList<>(); List<User> toRemove = new ArrayList<>();
for (User user : users.values()) { for (User user : users.values()) {
if (user.getUserState() == UserState.Disconnected || user.getUserState() == UserState.Offline if (user.getUserState() != UserState.Offline
&& user.isExpired(calendarExp.getTime())) { && user.isExpired(calendarExp.getTime())) {
if (user.getUserState() == UserState.Connected) {
user.lostConnection();
disconnect(user.getId(), DisconnectReason.BecameInactive);
}
user.setUserState(UserState.Offline); user.setUserState(UserState.Offline);
} }
if (user.getUserState() == UserState.Offline && user.isExpired(calendarRemove.getTime())) { if (user.getUserState() == UserState.Offline && user.isExpired(calendarRemove.getTime())) {