* 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) {
if (userId != null && clients.containsKey(userId)) {
String userName = clients.get(userId);
logger.debug(userName + " leaves chat: " + chatId);
clients.remove(userId);
String message = null;
switch (reason) {
case Disconnected:
message = " has left XMage";
break;
case LostConnection:
message = " has lost connection";
break;
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);
logger.debug(userName + " left chat with reason: " + message + " " + chatId);
try {
if (userId != null && clients.containsKey(userId)) {
String userName = clients.get(userId);
logger.debug((userName == null ? "[null]" :userName) + " leaves chat: " + (chatId == null?"[null]":chatId));
clients.remove(userId);
String message = null;
switch (reason) {
case Disconnected:
message = " has left XMage";
break;
case LostConnection:
message = " has lost connection";
break;
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);
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() {
@Override
public void run() {
logger.debug("checkExpired - start");
Calendar expired = Calendar.getInstance();
expired.add(Calendar.MINUTE, -3);
List<User> usersToCheck = new ArrayList<>();
usersToCheck.addAll(users.values());
for (User user : usersToCheck) {
if (user.isExpired(expired.getTime())) {
logger.info(new StringBuilder(user.getName()).append(": session expired userId: ").append(user.getId())
.append(" Host: ").append(user.getHost()));
removeUser(user.getId(), DisconnectReason.SessionExpired);
try {
logger.debug("checkExpired - start");
Calendar expired = Calendar.getInstance();
expired.add(Calendar.MINUTE, -3);
List<User> usersToCheck = new ArrayList<>();
usersToCheck.addAll(users.values());
for (User user : usersToCheck) {
if (user.isExpired(expired.getTime())) {
logger.info(new StringBuilder(user.getName()).append(": session expired userId: ").append(user.getId())
.append(" Host: ").append(user.getHost()));
removeUser(user.getId(), DisconnectReason.SessionExpired);
}
}
logger.debug("checkExpired - end");
} catch (Exception ex) {
handleException(ex);
}
logger.debug("checkExpired - end");
}
}
);