From cb20cca48a4b9b2a0c6e5ca6d04c6a126ea947fb Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 26 Feb 2022 20:07:19 +0100 Subject: [PATCH] added timer task for ack message handling --- .../KraSocketClientMessageTimerTask.java | 12 +++++++++++ .../java/earth/krakatao/SocketClient.java | 11 ++++++++++ .../protocol/KraSocketClientProtocol.java | 5 +---- .../KraSocketClientProtocolMessage.java | 20 +++++++++++++++++-- 4 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 src/main/java/earth/krakatao/KraSocketClientMessageTimerTask.java diff --git a/src/main/java/earth/krakatao/KraSocketClientMessageTimerTask.java b/src/main/java/earth/krakatao/KraSocketClientMessageTimerTask.java new file mode 100644 index 0000000..066bc7c --- /dev/null +++ b/src/main/java/earth/krakatao/KraSocketClientMessageTimerTask.java @@ -0,0 +1,12 @@ +package earth.krakatao; + +import java.util.TimerTask; + +public class KraSocketClientMessageTimerTask extends TimerTask { + + + @Override + public void run() { + KraSocketClient.getLogger().info("MessageTimerTask is running"); + } +} diff --git a/src/main/java/earth/krakatao/SocketClient.java b/src/main/java/earth/krakatao/SocketClient.java index f05d559..1a3e207 100644 --- a/src/main/java/earth/krakatao/SocketClient.java +++ b/src/main/java/earth/krakatao/SocketClient.java @@ -6,6 +6,8 @@ import earth.krakatao.protocol.KraSocketClientProtocolMessage; import earth.krakatao.protocol.KraSocketClientProtocolStatus; import java.net.URI; import java.nio.ByteBuffer; +import java.util.Timer; +import java.util.TimerTask; import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; @@ -13,6 +15,8 @@ public class SocketClient extends WebSocketClient { private final KraSocketClientProtocol kraProtocol; private final KraSocketClientEventInitiater kraSocketClientEventInitiater; + private final TimerTask timerTask; + private Timer timer; public SocketClient(URI serverUri, KraSocketClientEventInitiater kraSocketClientEventInitiater, KraSocketClientProtocol kraProtocol) { @@ -20,6 +24,8 @@ public class SocketClient extends WebSocketClient { this.kraSocketClientEventInitiater = kraSocketClientEventInitiater; this.kraProtocol = kraProtocol; + + this.timerTask = new KraSocketClientMessageTimerTask(); } public void SendMessage(KraSocketClientProtocolMessage kraProtocolMessage) { @@ -37,6 +43,9 @@ public class SocketClient extends WebSocketClient { public void onOpen(ServerHandshake serverHandshake) { this.kraSocketClientEventInitiater.callOnOpen(serverHandshake); KraSocketClient.getLogger().info("connection opened"); + + this.timer = new Timer(true); + this.timer.scheduleAtFixedRate(timerTask, 0, 3 * 1000); } @Override @@ -83,6 +92,8 @@ public class SocketClient extends WebSocketClient { this.kraSocketClientEventInitiater.callOnClose(code, reason, remote); KraSocketClient.logger.warning( "connection closed. Code: " + code + " reason: " + reason + " remote: " + remote); + + this.timer.cancel(); } @Override diff --git a/src/main/java/earth/krakatao/protocol/KraSocketClientProtocol.java b/src/main/java/earth/krakatao/protocol/KraSocketClientProtocol.java index 325966e..7a3c453 100644 --- a/src/main/java/earth/krakatao/protocol/KraSocketClientProtocol.java +++ b/src/main/java/earth/krakatao/protocol/KraSocketClientProtocol.java @@ -10,10 +10,7 @@ import java.util.function.Consumer; import lombok.Getter; public class KraSocketClientProtocol { - - //@Getter - //ArrayList cmdIDs = new ArrayList<>(); - + @Getter private final ArrayList cmdIDs; @Getter diff --git a/src/main/java/earth/krakatao/protocol/KraSocketClientProtocolMessage.java b/src/main/java/earth/krakatao/protocol/KraSocketClientProtocolMessage.java index 9d2fffe..2cbbcad 100644 --- a/src/main/java/earth/krakatao/protocol/KraSocketClientProtocolMessage.java +++ b/src/main/java/earth/krakatao/protocol/KraSocketClientProtocolMessage.java @@ -1,9 +1,8 @@ package earth.krakatao.protocol; -import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.Setter; -@AllArgsConstructor @Getter public class KraSocketClientProtocolMessage { @@ -13,6 +12,23 @@ public class KraSocketClientProtocolMessage { private final String uuid; private final short cmdNumber; private final String args; + @Setter + private int trySendCount; + @Setter + private long time; + + public KraSocketClientProtocolMessage(byte status, int cmdID, int dest, String uuid, + short cmdNumber, String args) { + this.status = status; + this.cmdID = cmdID; + this.dest = dest; + this.uuid = uuid; + this.cmdNumber = cmdNumber; + this.args = args; + + this.trySendCount = 0; + this.time = System.currentTimeMillis(); + } public int getStatus() { return Byte.toUnsignedInt(status);