diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java index 1947112c5..e102576bd 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java @@ -13,7 +13,7 @@ import static com.gempukku.lotro.game.state.GameEvent.Type.*; public class GatheringParticipantCommunicationChannel implements GameStateListener { private List _events = new LinkedList(); private String _self; - private Date _lastConsumed = new Date(); + private long _lastConsumed = System.currentTimeMillis(); private int _channelNumber; public GatheringParticipantCommunicationChannel(String self, int channelNumber) { @@ -164,17 +164,22 @@ public class GatheringParticipantCommunicationChannel implements GameStateListen } public List consumeGameEvents() { + updateLastAccess(); List result = _events; _events = new LinkedList(); - _lastConsumed = new Date(); return result; } public boolean hasGameEvents() { + updateLastAccess(); return _events.size()>0; } - public Date getLastConsumed() { + private void updateLastAccess() { + _lastConsumed = System.currentTimeMillis(); + } + + public long getLastAccessed() { return _lastConsumed; } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java index d3bbe4eb7..8dc3460c7 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/chat/ChatRoomMediator.java @@ -101,7 +101,7 @@ public class ChatRoomMediator { for (Map.Entry playerListener : copy.entrySet()) { String playerId = playerListener.getKey(); GatheringChatRoomListener listener = playerListener.getValue(); - if (currentTime > listener.getLastConsumed().getTime() + _channelInactivityTimeoutPeriod) { + if (currentTime > listener.getLastAccessed() + _channelInactivityTimeoutPeriod) { _chatRoom.partChatRoom(playerId); _listeners.remove(playerId); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GatheringChatRoomListener.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GatheringChatRoomListener.java index 81004d3b0..480443720 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GatheringChatRoomListener.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/GatheringChatRoomListener.java @@ -3,13 +3,12 @@ package com.gempukku.lotro.game; import com.gempukku.lotro.chat.ChatMessage; import com.gempukku.lotro.chat.ChatRoomListener; -import java.util.Date; import java.util.LinkedList; import java.util.List; public class GatheringChatRoomListener implements ChatRoomListener { private List _messages = new LinkedList(); - private Date _lastConsumed = new Date(); + private long _lastConsumed = System.currentTimeMillis(); @Override public synchronized void messageReceived(ChatMessage message) { @@ -17,17 +16,22 @@ public class GatheringChatRoomListener implements ChatRoomListener { } public synchronized List consumeMessages() { + updateLastAccess(); List messages = _messages; _messages = new LinkedList(); - _lastConsumed = new Date(); return messages; } public synchronized boolean hasMessages() { + updateLastAccess(); return _messages.size()>0; } - public synchronized Date getLastConsumed() { + private void updateLastAccess() { + _lastConsumed = System.currentTimeMillis(); + } + + public synchronized long getLastAccessed() { return _lastConsumed; } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java index 2a60be2c1..70795eeb0 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java @@ -236,7 +236,7 @@ public class LotroGameMediator { // Channel is stale (user no longer connected to game, to save memory, we remove the channel // User can always reconnect and establish a new channel GatheringParticipantCommunicationChannel channel = playerChannels.getValue(); - if (currentTime > channel.getLastConsumed().getTime() + _playerDecisionTimeoutPeriod) { + if (currentTime > channel.getLastAccessed() + _playerDecisionTimeoutPeriod) { _lotroGame.removeGameStateListener(channel); _communicationChannels.remove(playerId); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java index a4948c151..ee0bbddbe 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallCommunicationChannel.java @@ -25,11 +25,17 @@ public class HallCommunicationChannel { return _channelNumber; } - public long getLastConsumed() { + private void updateLastAccess() { + _lastConsumed = System.currentTimeMillis(); + } + + public long getLastAccessed() { return _lastConsumed; } public synchronized boolean hasChangesInCommunicationChannel(HallServer hallServer, Player player) { + updateLastAccess(); + final MutableObject newMotd = new MutableObject(); final Map> tournamentQueuesOnServer = new LinkedHashMap>(); @@ -137,6 +143,8 @@ public class HallCommunicationChannel { } public synchronized void processCommunicationChannel(HallServer hallServer, Player player, final HallChannelVisitor hallChannelVisitor) { + updateLastAccess(); + hallChannelVisitor.channelNumber(_channelNumber); final MutableObject newMotd = new MutableObject(); @@ -228,8 +236,6 @@ public class HallCommunicationChannel { if (newMotd.getValue() != null && !newMotd.equals(_lastMotd)) hallChannelVisitor.motdChanged((String) newMotd.getValue()); - - _lastConsumed = System.currentTimeMillis(); } private void notifyAboutTables(HallChannelVisitor hallChannelVisitor, Map> tablesOnServer) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java index 2b9b99ffa..42079b98b 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java @@ -566,7 +566,7 @@ public class HallServer extends AbstractServer { long currentTime = System.currentTimeMillis(); Map visitCopy = new LinkedHashMap(_playerChannelCommunication); for (Map.Entry lastVisitedPlayer : visitCopy.entrySet()) { - if (currentTime > lastVisitedPlayer.getValue().getLastConsumed() + _playerInactivityPeriod) { + if (currentTime > lastVisitedPlayer.getValue().getLastAccessed() + _playerInactivityPeriod) { Player player = lastVisitedPlayer.getKey(); _playerChannelCommunication.remove(player); leaveAwaitingTables(player);