m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
diff options
context:
space:
mode:
authorMagdalena Grodzińska <mag.grodzinska@gmail.com>2020-01-10 15:53:02 +0100
committerMagdalena Grodzińska <mag.grodzinska@gmail.com>2020-01-10 16:03:30 +0100
commitbb0d92a3a0339695776797d25252815bf8921fa9 (patch)
tree576136890245567fcf418881f44b1b93702a80db /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
parent60025accad672dac8228b7bac1006126223e2e58 (diff)
Separate server from udup
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
index b71a475..d6180be 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
@@ -10,22 +10,42 @@ import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.NoSuchElementException;
+import java.util.concurrent.atomic.AtomicBoolean;
-public class UDUPServer {
+public class UDUPServer implements Runnable {
private UDUP udp;
private UDUPSerializer serializer;
private DatagramSocket socket;
private InetAddress address;
private HashMap<String, ArrayList<byte[]>> partialPackets;
private int bufSize;
+ private final AtomicBoolean running;
- public UDUPServer(UDUP udp, InetAddress addr, int port, int bufSize) throws SocketException {
- this.udp = udp;
+ public UDUPServer(InetAddress addr, int port, int bufSize) throws SocketException {
this.socket = new DatagramSocket(port, addr);
this.address = addr;
this.bufSize = bufSize;
this.partialPackets = new HashMap<>();
this.serializer = new UDUPSerializer();
+ this.running = new AtomicBoolean(false);
+ }
+
+ public void setUDUP(UDUP udup) {
+ this.udp = udup;
+ }
+
+ public void run() {
+ System.out.println("UDP server running");
+ this.running.getAndSet(true);
+ while(this.running.get()) {
+ try {
+ this.acceptMessage();
+ } catch (IOException | InterruptedException e) {
+ e.printStackTrace();
+ this.running.getAndSet(false);
+ this.close();
+ }
+ }
}
public void acceptMessage() throws IOException, InterruptedException {