From 8ab9abb8e8acbe454841f7bf2e3748afe0cd6471 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 16 Aug 2017 07:51:48 +0200 Subject: [PATCH] * Some more changes to user disconnect handling. --- Mage.Common/src/main/java/mage/remote/SessionImpl.java | 2 +- .../src/main/java/mage/server/DisconnectReason.java | 7 ++++--- Mage.Server/src/main/java/mage/server/UserManager.java | 6 +++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Mage.Common/src/main/java/mage/remote/SessionImpl.java b/Mage.Common/src/main/java/mage/remote/SessionImpl.java index 19947d560f5..86e598c04b2 100644 --- a/Mage.Common/src/main/java/mage/remote/SessionImpl.java +++ b/Mage.Common/src/main/java/mage/remote/SessionImpl.java @@ -1440,7 +1440,7 @@ public class SessionImpl implements Session { @Override public boolean endUserSession(String userSessionId) { 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) { if (isConnected()) { server.endUserSession(sessionId, userSessionId); diff --git a/Mage.Server/src/main/java/mage/server/DisconnectReason.java b/Mage.Server/src/main/java/mage/server/DisconnectReason.java index 576c64f2c7e..fce44932c6d 100644 --- a/Mage.Server/src/main/java/mage/server/DisconnectReason.java +++ b/Mage.Server/src/main/java/mage/server/DisconnectReason.java @@ -4,9 +4,9 @@ package mage.server; * * @author LevelX2 */ - public enum DisconnectReason { LostConnection(" has lost connection"), + BecameInactive(" has become inactive"), Disconnected(" has left XMage"), CleaningUp(" [cleaning up]"), ConnectingOtherInstance(" reconnected and replaced still active old session"), @@ -15,11 +15,12 @@ public enum DisconnectReason { Undefined(""); String message; - DisconnectReason(String message){ + + DisconnectReason(String message) { this.message = message; } - public String getMessage(){ + public String getMessage() { return message; } } diff --git a/Mage.Server/src/main/java/mage/server/UserManager.java b/Mage.Server/src/main/java/mage/server/UserManager.java index 0379684bd11..5545ac825ef 100644 --- a/Mage.Server/src/main/java/mage/server/UserManager.java +++ b/Mage.Server/src/main/java/mage/server/UserManager.java @@ -174,8 +174,12 @@ public enum UserManager { calendarRemove.add(Calendar.MINUTE, -8); List toRemove = new ArrayList<>(); for (User user : users.values()) { - if (user.getUserState() == UserState.Disconnected || user.getUserState() == UserState.Offline + if (user.getUserState() != UserState.Offline && user.isExpired(calendarExp.getTime())) { + if (user.getUserState() == UserState.Connected) { + user.lostConnection(); + disconnect(user.getId(), DisconnectReason.BecameInactive); + } user.setUserState(UserState.Offline); } if (user.getUserState() == UserState.Offline && user.isExpired(calendarRemove.getTime())) {