* Added try catch block for user expired handling.

This commit is contained in:
LevelX2 2014-07-08 02:13:26 +02:00
parent b6bc7c6a51
commit 0120808ef8
2 changed files with 37 additions and 29 deletions

View file

@ -66,25 +66,29 @@ public class ChatSession {
} }
synchronized public void kill(UUID userId, DisconnectReason reason) { synchronized public void kill(UUID userId, DisconnectReason reason) {
if (userId != null && clients.containsKey(userId)) { try {
String userName = clients.get(userId); if (userId != null && clients.containsKey(userId)) {
logger.debug(userName + " leaves chat: " + chatId); String userName = clients.get(userId);
clients.remove(userId); logger.debug((userName == null ? "[null]" :userName) + " leaves chat: " + (chatId == null?"[null]":chatId));
String message = null; clients.remove(userId);
switch (reason) { String message = null;
case Disconnected: switch (reason) {
message = " has left XMage"; case Disconnected:
break; message = " has left XMage";
case LostConnection: break;
message = " has lost connection"; case LostConnection:
break; message = " has lost connection";
default: break;
logger.debug(userName + " left chat with reason: " + reason.name() + " " + chatId); default:
} logger.debug(userName + " left chat with reason: " + reason.name() + " " + chatId);
if (message != null) { }
broadcast(null, new StringBuilder(userName).append(message).toString(), MessageColor.BLUE, true, MessageType.STATUS); if (message != null) {
logger.debug(userName + " left chat with reason: " + message + " " + chatId); broadcast(null, new StringBuilder(userName).append(message).toString(), MessageColor.BLUE, true, MessageType.STATUS);
logger.debug(userName + " left chat with reason: " + message + " " + chatId);
}
} }
} catch(Exception ex) {
logger.fatal(ex);
} }
} }

View file

@ -155,19 +155,23 @@ public class UserManager {
new Runnable() { new Runnable() {
@Override @Override
public void run() { public void run() {
logger.debug("checkExpired - start"); try {
Calendar expired = Calendar.getInstance(); logger.debug("checkExpired - start");
expired.add(Calendar.MINUTE, -3); Calendar expired = Calendar.getInstance();
List<User> usersToCheck = new ArrayList<>(); expired.add(Calendar.MINUTE, -3);
usersToCheck.addAll(users.values()); List<User> usersToCheck = new ArrayList<>();
for (User user : usersToCheck) { usersToCheck.addAll(users.values());
if (user.isExpired(expired.getTime())) { for (User user : usersToCheck) {
logger.info(new StringBuilder(user.getName()).append(": session expired userId: ").append(user.getId()) if (user.isExpired(expired.getTime())) {
.append(" Host: ").append(user.getHost())); logger.info(new StringBuilder(user.getName()).append(": session expired userId: ").append(user.getId())
removeUser(user.getId(), DisconnectReason.SessionExpired); .append(" Host: ").append(user.getHost()));
removeUser(user.getId(), DisconnectReason.SessionExpired);
}
} }
logger.debug("checkExpired - end");
} catch (Exception ex) {
handleException(ex);
} }
logger.debug("checkExpired - end");
} }
} }
); );