m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
diff options
context:
space:
mode:
authorMagdalena Grodzińska <mag.grodzinska@gmail.com>2020-01-06 16:14:44 +0100
committerMagdalena Grodzińska <mag.grodzinska@gmail.com>2020-01-06 16:14:44 +0100
commitab9a470aa67ef414581145ad671e119d9edb86d9 (patch)
tree6d48ae324b9e83c06e4eb598ddc05291ba14ea70 /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
parentaa7278e17afb5129034bbe1af1cf4ca3c6ba3e90 (diff)
Refactor UDUP module
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java64
1 files changed, 11 insertions, 53 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
index 93f2898..82aaeb1 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
@@ -1,83 +1,41 @@
package pl.edu.mimuw.cloudatlas.agent.modules;
-import pl.edu.mimuw.cloudatlas.agent.messages.TimerSchedulerMessage;
import pl.edu.mimuw.cloudatlas.agent.messages.UDUPMessage;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.*;
public class UDUPClient {
private UDUP udp;
+ private UDUPSerializer serializer;
private int serverPort;
- private int timeout;
- private int retriesCount;
private DatagramSocket socket;
private int bufsize;
- UDUPClient(UDUP udp, int serverPort, int timeout, int retriesCount, int bufferSize) throws SocketException, UnknownHostException {
+ UDUPClient(UDUP udp, int serverPort, int bufferSize) throws SocketException {
this.udp = udp;
this.serverPort = serverPort;
- this.timeout = timeout;
- this.retriesCount = retriesCount;
this.socket = new DatagramSocket();
this.bufsize = bufferSize;
+ this.serializer = new UDUPSerializer();
}
- // TODO make sure that retry count in message is updated correctly
- public void sendMessage(UDUPMessage msg) throws InterruptedException {
- String messageId = msg.getMessageId();
-
- if (msg.getRetry() >= this.retriesCount) {
- this.udp.removeConversation(msg.getConversationId());
- } else {
- this.udp.addConversation(msg);
- try {
- sendUDP(msg);
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- msg.setRetry(msg.getRetry() + 1);
-
- // TODO add sending message to timer with retry
- /*
- this.udp.executor.passMessage(new TimerSchedulerMessage(
- "",
- 0,
- "",
- this.timeout,
- System.currentTimeMillis() / 1000L,
- new TimerScheduledTask() {
- @Override
- public void run() {
- try {
- this.sendMessage(msg);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }));
-
- */
- }
- }
-
- private void sendUDP(UDUPMessage msg) throws IOException {
+ public void sendMessage(UDUPMessage msg) throws IOException {
int offset = 0;
int outputSize;
- byte[] buf = new byte[bufsize];
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- this.udp.serialize(output, msg);
- outputSize = output.size();
+ byte[] buf = this.serializer.serialize(msg);
+ outputSize = buf.length;
do {
- output.write(buf, offset, bufsize);
- System.out.println("UDP sends message: " + buf);
outputSize =- bufsize;
offset += bufsize;
DatagramPacket packet = new DatagramPacket(buf, buf.length, msg.getContact().getAddress(), this.serverPort);
+ System.out.println("UDP sends message: ");
+ for (byte b : buf) {
+ System.out.print(b);
+ }
+ System.out.println("to " + packet.getAddress());
this.socket.send(packet);
} while (outputSize > bufsize);
}