diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollableResource.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollableResource.java index fa45babec..51232b966 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollableResource.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollableResource.java @@ -10,4 +10,6 @@ public interface LongPollableResource { public boolean registerRequest(WaitingRequest waitingRequest); public void deregisterRequest(WaitingRequest waitingRequest); + + public void requestWaitingNotification(); } diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollingSystem.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollingSystem.java index 27bfdc097..46c2545a2 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollingSystem.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/polling/LongPollingSystem.java @@ -82,6 +82,8 @@ public class LongPollingSystem { waitingRequest.getLongPollableResource().deregisterRequest(waitingRequest); _waitingActions.remove(waitingRequest); execute(waitingRequest.getLongPollingResource()); + } else { + waitingRequest.getLongPollableResource().requestWaitingNotification(); } } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameCommunicationChannel.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameCommunicationChannel.java index b243bc14b..e17b57e9e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameCommunicationChannel.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameCommunicationChannel.java @@ -3,7 +3,6 @@ package com.gempukku.lotro.game.state; import com.gempukku.lotro.common.Token; import com.gempukku.lotro.communication.GameStateListener; import com.gempukku.lotro.game.PhysicalCard; -import static com.gempukku.lotro.game.state.GameEvent.Type.*; import com.gempukku.lotro.logic.decisions.AwaitingDecision; import com.gempukku.lotro.logic.timing.GameStats; import com.gempukku.polling.LongPollableResource; @@ -11,6 +10,8 @@ import com.gempukku.polling.WaitingRequest; import java.util.*; +import static com.gempukku.lotro.game.state.GameEvent.Type.*; + public class GameCommunicationChannel implements GameStateListener, LongPollableResource { private List _events = Collections.synchronizedList(new LinkedList()); private String _self; @@ -49,6 +50,11 @@ public class GameCommunicationChannel implements GameStateListener, LongPollable return false; } + @Override + public void requestWaitingNotification() { + // Ignore, we do not remove user from it + } + private synchronized void appendEvent(GameEvent event) { _events.add(event); if (_waitingRequest != null) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DraftCommunicationChannel.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DraftCommunicationChannel.java index 4b7563b70..c824381d4 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DraftCommunicationChannel.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/draft/DraftCommunicationChannel.java @@ -34,7 +34,7 @@ public class DraftCommunicationChannel implements LongPollableResource { } @Override - public boolean registerRequest(WaitingRequest waitingRequest) { + public synchronized boolean registerRequest(WaitingRequest waitingRequest) { if (_changed) return true; @@ -42,6 +42,11 @@ public class DraftCommunicationChannel implements LongPollableResource { return false; } + @Override + public synchronized void requestWaitingNotification() { + updateLastAccess(); + } + public synchronized void draftChanged() { _changed = true; if (_waitingRequest != null) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ChatCommunicationChannel.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ChatCommunicationChannel.java index bc18b69d5..fa4e69ba7 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ChatCommunicationChannel.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ChatCommunicationChannel.java @@ -27,6 +27,11 @@ public class ChatCommunicationChannel implements ChatRoomListener, LongPollableR return false; } + @Override + public synchronized void requestWaitingNotification() { + updateLastAccess(); + } + @Override public synchronized void messageReceived(ChatMessage message) { _messages.add(message); 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 a91c5527e..ff66fc81d 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 @@ -37,6 +37,11 @@ public class HallCommunicationChannel implements LongPollableResource { return false; } + @Override + public synchronized void requestWaitingNotification() { + updateLastAccess(); + } + public synchronized void hallChanged() { _changed = true; if (_waitingRequest != null) {