m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-06 20:34:06 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-06 20:34:06 +0100
commit7b6d9a490cd07a6ffaf4b69df501a72c538621de (patch)
treeb9a636da41f8e23d84a9ef93961758ea45268f3b /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
parent4aaa6218b853873c632aba0ed8696f29640041d1 (diff)
parent2feff1aa41c41008fcda2dd60c718cf09deb3fa1 (diff)
Merge branch 'master' into gossip-girl
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.java47
1 files changed, 47 insertions, 0 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
new file mode 100644
index 0000000..82aaeb1
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java
@@ -0,0 +1,47 @@
+package pl.edu.mimuw.cloudatlas.agent.modules;
+
+import pl.edu.mimuw.cloudatlas.agent.messages.UDUPMessage;
+
+import java.io.IOException;
+import java.net.*;
+
+public class UDUPClient {
+ private UDUP udp;
+ private UDUPSerializer serializer;
+ private int serverPort;
+ private DatagramSocket socket;
+ private int bufsize;
+
+ UDUPClient(UDUP udp, int serverPort, int bufferSize) throws SocketException {
+ this.udp = udp;
+ this.serverPort = serverPort;
+ this.socket = new DatagramSocket();
+ this.bufsize = bufferSize;
+ this.serializer = new UDUPSerializer();
+ }
+
+ public void sendMessage(UDUPMessage msg) throws IOException {
+ int offset = 0;
+ int outputSize;
+
+ byte[] buf = this.serializer.serialize(msg);
+ outputSize = buf.length;
+
+ do {
+ 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);
+ }
+
+ void close() {
+ this.socket.close();
+ }
+
+}