diff --git a/src/main/java/earth/krakatao/SocketClient.java b/src/main/java/earth/krakatao/SocketClient.java index 11175b8..8202cdf 100644 --- a/src/main/java/earth/krakatao/SocketClient.java +++ b/src/main/java/earth/krakatao/SocketClient.java @@ -86,21 +86,26 @@ public class SocketClient extends WebSocketClient { return; } - // response to the user that this message cmdID is already in the queue - if (kraProtocolMessage.getStatus() == KraSocketClientProtocolStatus.GET.getStatus() - && this.kraProtocol.getSendQueueMessages().containsKey(kraProtocolMessage.getCmdID())) { - // TODO: uuid - kraProtocolMessage = new KraSocketClientProtocolMessage( - KraSocketClientProtocolStatus.MESSAGE_ALREADY_IN_QUEUE.getStatus(), - kraProtocolMessage.getStatus() == KraSocketClientProtocolStatus.GET.getStatus() - ? kraProtocolMessage.getStatus() : 0, 0, - UUID.fromString("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"), - (short) kraProtocolMessage.getCmdNumber(), "", null); + // ack + if (kraProtocolMessage.getStatus() == KraSocketClientProtocolStatus.GET.getStatus()) { + // response to the user that this message cmdID is already in the queue + if (this.kraProtocol.getReceivedQueueMessages().containsKey(kraProtocolMessage.getCmdID())) { + // TODO: Are the status and the cmdID not sufficient here? + kraProtocolMessage = new KraSocketClientProtocolMessage( + KraSocketClientProtocolStatus.MESSAGE_ALREADY_IN_QUEUE.getStatus(), + kraProtocolMessage.getCmdID(), 0, + UUID.fromString("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"), + (short) kraProtocolMessage.getCmdNumber(), "", null); - KraSocketClient.getLogger() - .info("response MESSAGE_ALREADY_IN_QUEUE " + kraProtocolMessage.getCmdID()); - this.SendMessage(kraProtocolMessage); - return; + KraSocketClient.getLogger() + .info("response MESSAGE_ALREADY_IN_QUEUE cmdID: " + kraProtocolMessage.getCmdID() + + " cmdNumber: " + kraProtocolMessage.getCmdNumber()); + this.SendMessage(kraProtocolMessage); + return; + } else { // not in received queue -> add msg to received queue + this.kraProtocol.getReceivedQueueMessages() + .put(kraProtocolMessage.getCmdID(), kraProtocolMessage); + } } this.kraSocketClientEventInitiater.callOnMessage(kraProtocolMessage);