added timer task for ack message handling

master
Alex 2022-02-26 20:07:19 +01:00
parent 384a986563
commit cb20cca48a
4 changed files with 42 additions and 6 deletions

View File

@ -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");
}
}

View File

@ -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

View File

@ -10,10 +10,7 @@ import java.util.function.Consumer;
import lombok.Getter;
public class KraSocketClientProtocol {
//@Getter
//ArrayList<Integer> cmdIDs = new ArrayList<>();
@Getter
private final ArrayList<Integer> cmdIDs;
@Getter

View File

@ -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);