summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/derms')
-rw-r--r--src/main/java/derms/net/ConcurrentDatagramSocket.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/derms/net/ConcurrentDatagramSocket.java b/src/main/java/derms/net/ConcurrentDatagramSocket.java
new file mode 100644
index 0000000..ee5dbb2
--- /dev/null
+++ b/src/main/java/derms/net/ConcurrentDatagramSocket.java
@@ -0,0 +1,44 @@
+package derms.net;
+
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.SocketException;
+import java.time.Duration;
+
+public class ConcurrentDatagramSocket {
+ private final DatagramSocket sock;
+
+ public ConcurrentDatagramSocket() throws IOException {
+ this.sock = new DatagramSocket();
+ }
+
+ public synchronized void close() {
+ sock.close();
+ }
+
+ public synchronized void connect(InetAddress address, int port) {
+ sock.connect(address, port);
+ }
+
+ public synchronized InetAddress getLocalAddress() {
+ return sock.getLocalAddress();
+ }
+
+ public synchronized int getLocalPort() {
+ return sock.getLocalPort();
+ }
+
+ public synchronized void receive(DatagramPacket p) throws IOException {
+ sock.receive(p);
+ }
+
+ public synchronized void send(DatagramPacket p) throws IOException {
+ sock.send(p);
+ }
+
+ public synchronized void setSoTimeout(Duration timeout) throws SocketException {
+ sock.setSoTimeout((int) timeout.toMillis());
+ }
+}